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;
}
Constructeurs
Construit une valeur par défaut checked_array_iterator ou un checked_array_iterator à partir d'un itérateur sous-jacent. |
Typedef
Un type qui fournit la différence entre deux checked_array_iterators faisant référence à des éléments dans le même conteneur. |
|
Un type qui fournit un pointeur vers un élément adressé par un checked_array_iterator. |
|
Un type qui fournit une référence à un élément adressé par un checked_array_iterator. |
Fonctions membres
Récupère l'itérateur sous-jacent à partir de sa checked_array_iterator. |
Opérateurs
Teste deux checked_array_iterators l'égalité. |
|
Teste deux checked_array_iterators d'inégalité. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Retourne l'élément qui un checked_array_iterator adresses. |
|
Retourne un pointeur vers l'élément adressé par la checked_array_iterator. |
|
Incrémente le checked_array_iterator à l'élément suivant. |
|
Décrémente le checked_array_iterator à l'élément précédent. |
|
Ajoute un offset spécifié pour une checked_array_iterator. |
|
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. |
|
Décrémente un offset spécifié à partir d'un checked_array_iterator. |
|
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. |
|
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