Partager via


<iterator>

Définit les primitives des itérateurs, les itérateurs prédéfinis et les itérateurs de flux, ainsi que plusieurs modèles de prise en charge. Les itérateurs prédéfinis incluent des adaptateurs d'insertion et d'inversion. Il existe trois classes d'adaptateurs d'itérateur d'insertion : avant, arrière et général. Ils fournissent une sémantique d'insertion, différente de la sémantique de remplacement que les itérateurs de fonctions membres de conteneurs fournissent.

#include <iterator>

Notes

Les itérateurs sont une généralisation des pointeurs qui s'abstrait de leurs contraintes de telle sorte qu'un programme C++ puisse gérer différentes structures de données de manière uniforme. Les itérateurs se comportent comme des intermédiaires entre les conteneurs et les algorithmes génériques. Au lieu de traiter des types de données spécifiques, les algorithmes sont définis pour traiter une plage spécifiée par un type d'itérateur. Toute structure de données répondant aux exigences de l'itérateur peut être traitée par l'algorithme. Il existe cinq types ou catégories d'itérateur, chacun possédant son propre ensemble d'exigences et de fonctionnalités résultantes :

  • De sortie : se déplace vers l'avant, peut stocker mais pas récupérer des valeurs, fourni par ostream et inserter.

  • D'entrée : se déplace vers l'avant, peut récupérer mais pas stocker des valeurs, fourni par istream.

  • D'avance : se déplace vers l'avant, peut stocker et récupérer des valeurs.

  • Bidirectionnel : se déplace vers l'avant et l'arrière, peut stocker et récupérer des valeurs, fourni par list, set, multiset, map et multimap.

  • D'accès aléatoire : éléments accessibles dans n'importe quel ordre, peut stocker et récupérer des valeurs, fourni par vector, deque, string et array.

Les itérateurs qui ont des exigences supérieures et disposent d'un accès plus performant aux éléments peuvent être utilisés à la place d'itérateurs ayant moins d'exigences. Par exemple, si un itérateur d'avance est appelé, alors un itérateur d'accès aléatoire peut être utilisé à la place.

Visual Studio ajoute des extensions aux itérateurs de la bibliothèque C++ standard pour prendre en charge diverses situations en mode débogage pour les itérateurs vérifiés et non vérifiés. Pour plus d'informations, consultez Bibliothèques sécurisées : bibliothèque standard C++.

Fonctions

advance

Incrémente un itérateur d'un nombre spécifié de positions.

back_inserter

Crée un itérateur qui peut insérer des éléments à la fin d'un conteneur spécifié.

begin

Récupère un itérateur sur le premier élément d'un conteneur spécifié.

cbegin

Récupère un itérateur constant sur le premier élément d'un conteneur spécifié.

cend

Récupère un itérateur constant sur l'élément qui suit le dernier élément dans le conteneur spécifié.

distance

Détermine le nombre d'incréments entre les positions traitées par deux itérateurs.

end

Récupère un itérateur de l'élément qui suit le dernier élément dans le conteneur spécifié.

front_inserter

Crée un itérateur qui peut insérer des éléments à l'avant d'un conteneur spécifié.

inserter

Adaptateur d'itérateur qui ajoute un nouvel élément à un conteneur à un point d'insertion donné.

make_checked_array_iterator

Crée un checked_array_iterator qui peut être utilisé par d'autres algorithmes.

Notes

Cette fonction est une extension Microsoft de la bibliothèque C++ standard.Le code implémenté à l'aide de cette fonction ne peut pas être utilisé dans les environnements de build C++ standard qui ne prennent pas en charge cette extension Microsoft.

make_move_iterator

Retourne un itérateur de déplacement contenant l'itérateur fourni en tant qu'itérateur de base stocké.

make_unchecked_array_iterator

Crée un unchecked_array_iterator qui peut être utilisé par d'autres algorithmes.

Notes

Cette fonction est une extension Microsoft de la bibliothèque C++ standard.Le code implémenté à l'aide de cette fonction ne peut pas être utilisé dans les environnements de build C++ standard qui ne prennent pas en charge cette extension Microsoft.

next

Itère un nombre de fois donné et retourne la nouvelle position de l'itérateur.

prev

Itère en sens inverse un nombre de fois donné et retourne la nouvelle position de l'itérateur.

Opérateurs

operator!=

Teste si l'objet itérateur situé à gauche de l'opérateur n'est pas égal à l'objet itérateur situé à droite.

operator==

Teste si l'objet itérateur situé à gauche de l'opérateur est égal à l'objet itérateur situé à droite.

operator<

Teste si l'objet itérateur situé à gauche de l'opérateur est inférieur à l'objet itérateur situé à droite.

operator<=

Teste si l'objet itérateur situé à gauche de l'opérateur est inférieur ou égal à l'objet itérateur situé à droite.

operator>

Teste si l'objet itérateur situé à gauche de l'opérateur est supérieur à l'objet itérateur situé à droite.

operator>=

Teste si l'objet itérateur situé à gauche de l'opérateur est supérieur ou égal à l'objet itérateur situé à droite.

operator+

Ajoute un décalage à un itérateur et retourne le nouvel reverse_iterator qui se rapporte à l'élément inséré à la nouvelle position décalée.

operator-

Soustrait un itérateur à un autre et retourne la différence.

Classes

back_insert_iterator

Cette classe de modèle décrit un objet itérateur de sortie. Elle insère des éléments dans un conteneur de type Conteneur, auquel elle accède via l'objet pointeur protégé qu'elle stocke sous le nom de conteneur.

bidirectional_iterator_tag

Classe qui fournit un type de retour pour une fonction iterator_category représentant un itérateur bidirectionnel.

checked_array_iterator

Classe qui accède à un tableau en utilisant un itérateur vérifié d'accès aléatoire.

Notes

Cette classe est une extension Microsoft de la bibliothèque C++ standard.Le code implémenté à l'aide de cette fonction ne peut pas être utilisé dans les environnements de build C++ standard qui ne prennent pas en charge cette extension Microsoft.

forward_iterator_tag

Classe qui fournit un type de retour pour une fonction iterator_category représentant un itérateur d'avance.

front_insert_iterator

Cette classe de modèle décrit un objet itérateur de sortie. Elle insère des éléments dans un conteneur de type Conteneur, auquel elle accède via l'objet pointeur protégé qu'elle stocke sous le nom de conteneur.

input_iterator_tag

Classe qui fournit un type de retour pour une fonction iterator_category représentant un itérateur d'entrée.

insert_iterator

Cette classe de modèle décrit un objet itérateur de sortie. Elle insère des éléments dans un conteneur de type Conteneur, auquel elle accède via l'objet pointeur protégé qu'elle stocke sous le nom de conteneur. Elle stocke également l'objet itérateur protégé, issu de la classe Container::iterator, appelé iter.

istream_iterator

Cette classe de modèle décrit un objet itérateur d'entrée. Elle extrait des objets de classe Ty d'un flux d'entrée, auquel elle accède via un objet qu'elle stocke, de type pointeur vers basic_istream<Elem, Tr>.

istreambuf_iterator

Cette classe de modèle décrit un objet itérateur d'entrée. Elle insère des éléments de classe Elem dans une mémoire tampon de flux de sortie, à laquelle elle accède via un objet qu'elle stocke, de type pointeur vers basic_streambuf<Elem, Tr>.

iterator

Cette classe de modèle est utilisée comme type de base pour tous les itérateurs.

iterator_traits

Classe d'assistance de modèle fournissant des types critiques qui sont associés à différents types d'itérateur afin de pouvoir être référencés de la même façon.

move_iterator

Un objet move_iterator stocke un itérateur d'accès aléatoire de type RandomIterator. Il se comporte comme un itérateur d'accès aléatoire, sauf lorsqu'il est déréférencé. Le résultat de operator* est implicitement casté en value_type&&: pour créer une rvalue reference.

ostream_iterator

Cette classe de modèle décrit un objet itérateur de sortie. Elle insère des objets de classe Type dans un flux de sortie, auquel elle accède via un objet qu'elle stocke, de type pointeur vers basic_ostream<Elem, Tr>.

ostreambuf_iterator

Cette classe de modèle décrit un objet itérateur de sortie. Elle insère des éléments de classe Elem dans une mémoire tampon de flux de sortie, à laquelle elle accède via un objet qu'elle stocke, de type pointeur vers basic_streambuf<Elem, Tr>.

output_iterator_tag

Classe qui fournit un type de retour pour une fonction iterator_category représentant un itérateur de sortie.

random_access_iterator_tag

Classe qui fournit un type de retour pour une fonction iterator_category représentant un itérateur d'accès aléatoire.

reverse_iterator

Cette classe de modèle décrit un objet qui se comporte comme un itérateur d'accès aléatoire, mais en sens inverse.

unchecked_array_iterator

Classe qui accède à un tableau en utilisant un itérateur non vérifié d'accès aléatoire.

Notes

Cette classe est une extension Microsoft de la bibliothèque C++ standard.Le code implémenté à l'aide de cette fonction ne peut pas être utilisé dans les environnements de build C++ standard qui ne prennent pas en charge cette extension Microsoft.

Voir aussi

Référence

Sécurité des threads dans la bibliothèque standard C++

Bibliothèque STL (Standard Template Library)

Autres ressources

Fichiers d'en-tête de bibliothèque standard C++