Share via


checked_array_iterator Class

Le checked_array_iterator classe vous permet de transformer un tableau ou un pointeur dans un itérateur vérifié.

[!REMARQUE]

Cette classe est une extension Microsoft vers la bibliothèque C++ Standard.Code implémenté à l'aide de cet algorithme ne sera pas portable.Pour obtenir un exemple montrant comment écrire du code qui ne nécessite pas l'utilisation de cette classe, consultez le deuxième exemple ci-dessous.

template <class _Iterator>
    class checked_array_iterator
        : public iterator<
            typename iterator_traits<_Iterator>::iterator_category, 
            typename iterator_traits<_Iterator>::value_type, 
            typename iterator_traits<_Iterator>::difference_type, 
            typename iterator_traits<_Iterator>::pointer, 
            typename iterator_traits<_Iterator>::reference>

Notes

Cette classe est définie dans le stdext espace de noms.

Pour plus d'informations sur la fonctionnalité d'itérateur checked, voir Itérateurs vérifiés.

Exemple

L'exemple suivant montre comment définir et utiliser un itérateur groupe coché.

Si la destination n'est pas assez grande pour contenir tous les éléments copiés, comme serait le cas si vous avez modifié la ligne :

copy(a, a + 5, checked_array_iterator<int*>(b, 5));

en

copy(a, a + 5, checked_array_iterator<int*>(b, 4));

Une erreur d'exécution se produira.

// checked_array_iterator_overview.cpp
// compile with: /EHsc
#include <algorithm>
#include <iostream>

using namespace std;
using namespace stdext;

int main() {
   int a[]={0, 1, 2, 3, 4};
   int b[5];
   copy(a, a + 5, checked_array_iterator<int*>(b, 5));

   cout << "(";
   for (int i = 0 ; i < 5 ; i++)
      cout << " " << b[i];
   cout << " )" << endl;

   // constructor example
   checked_array_iterator<int*> checked_out_iter(b, 5);
   copy(a, a + 5, checked_out_iter);

   cout << "(";
   for (int i = 0 ; i < 5 ; i++)
      cout << " " << b[i];
   cout << " )" << endl;
}
  

Pour éviter la nécessité de la checked_array_iterator de classe lors de l'utilisation d'algorithmes de la bibliothèque C++ Standard, pensez à utiliser un vector au lieu d'un tableau alloué dynamiquement.L'exemple suivant illustre la procédure à suivre pour réaliser cette opération.

// checked_array_iterator_2.cpp
// compile with: /EHsc

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    std::vector<int> v(10);
    int *arr = new int[10];
    for (int i = 0; i < 10; ++i)
    {
        v[i] = i;
        arr[i] = i;
    }

    // std::copy(v.begin(), v.end(), arr); will result in
    // warning C4996. To avoid this warning while using int *,
    // use the Microsoft extension checked_array_iterator.
    std::copy(v.begin(), v.end(),
              stdext::checked_array_iterator<int *>(arr, 10));

    // Instead of using stdext::checked_array_iterator and int *,
    // consider using std::vector to encapsulate the array. This will
    // result in no warnings, and the code will be portable.
    std::vector<int> arr2(10);    // Similar to int *arr = new int[10];
    std::copy(v.begin(), v.end(), arr2.begin());

    for (int j = 0; j < arr2.size(); ++j)
    {
        cout << " " << arr2[j];
    }
    cout << endl;

    return 0;
}
  

Aa985928.collapse_all(fr-fr,VS.110).gifConstructeurs

checked_array_iterator

Construit une valeur par défaut checked_array_iterator ou un checked_array_iterator à partir d'un itérateur sous-jacent.

Aa985928.collapse_all(fr-fr,VS.110).gifTypedef

difference_type

Un type qui fournit la différence entre deux checked_array_iterators faisant référence à des éléments dans le même conteneur.

pointer

Un type qui fournit un pointeur vers un élément adressé par un checked_array_iterator.

Référence

Un type qui fournit une référence à un élément adressé par un checked_array_iterator.

Aa985928.collapse_all(fr-fr,VS.110).gifFonctions membres

base

Récupère l'itérateur sous-jacent à partir de sa checked_array_iterator.

Aa985928.collapse_all(fr-fr,VS.110).gifOpérateurs

opérateur ==

Teste deux checked_array_iterators l'égalité.

opérateur! =

Teste deux checked_array_iterators d'inégalité.

opérateur <

Teste si la checked_array_iterator sur le côté gauche de l'opérateur est inférieure à la checked_array_iterator sur le côté droit.

opérateur >

Teste si la checked_array_iterator sur le côté gauche de l'opérateur est supérieure à la checked_array_iterator sur le côté droit.

opérateur < =

Teste si la checked_array_iterator sur le côté gauche de l'opérateur est inférieure ou égale à la checked_array_iterator sur le côté droit.

opérateur > =

Teste si la checked_array_iterator sur le côté gauche de l'opérateur est supérieure ou égale à la checked_array_iterator sur le côté droit.

operator*

Retourne l'élément qui un checked_array_iterator adresses.

operator->

Retourne un pointeur vers l'élément adressé par la checked_array_iterator.

operator++

Incrémente le checked_array_iterator à l'élément suivant.

opérateur--

Décrémente le checked_array_iterator à l'élément précédent.

opérateur +=

Ajoute un offset spécifié pour une checked_array_iterator.

opérateur +

Ajoute un offset à un itérateur et renvoie la nouvelle checked_array_iterator l'élément inséré à la nouvelle position de décalage d'adressage.

opérateur =

Décrémente un offset spécifié à partir d'un checked_array_iterator.

opérateur-

Décrémente un offset à partir d'un itérateur et renvoie la nouvelle checked_array_iterator l'élément inséré à la nouvelle position de décalage d'adressage.

operator[]

Renvoie une référence à un offset de l'élément de l'élément adressé par un checked_array_iterator par un nombre spécifié de positions.

Configuration requise

En-tête : <iterator>

Espace de noms : stdext

Voir aussi

Référence

Modèles Standard

Autres ressources

<iterator> membres

membres de checked_array_iterator