44 votes

Types d'itérateurs : Itérateur de sortie, d'entrée, d'avance ou à accès aléatoire.

Combien de types d'itérateurs existe-t-il dans la STL C++ ? Pour l'instant, je les connais :

  • Iterator de sortie
  • Iterator d'entrée
  • Iterator avant
  • Itérateur à accès aléatoire

Y en a-t-il d'autres ? Quelles sont les différences entre eux ? Quelles sont les limites et les caractéristiques de chacun ? Quel type est utilisé quand ?

42voto

zkunov Points 1634

Si vous le pouvez, trouvez et lisez "The C++ Standard Library : A Tutorial and Reference". Ce livre contient un chapitre entier sur les itérateurs STL.

Voici un petit extrait du livre :

Iterator Category  Ability                          Providers
-----------------  -------------------------------  ----------------------------
Input iterator     Reads forward                    istream
Output iterator    Writes forward                   ostream, inserter
Forward iterator   Reads/writes forward             forward_list,
                                                      unordered_[multi]set,
                                                      unordered_[multi]map
Bidirectional it.  Reads/writes forward/backward    list, [multi]set, [multi]map
Random access it.  Reads/writes with random access  vector, deque string, array

15voto

larsmans Points 167484

La norme C++ dispose également d'un concept d'itérateur bidirectionnel, qui est un itérateur avant qui peut également revenir en arrière (avec le paramètre operator-- ). Ensemble, ces cinq éléments forment toute la hiérarchie des itérateurs du paragraphe 24.2 de la norme C++.

L'ancienne STL avait également le concept d'une Itérateur trivial . Voir son Aperçu de l'itérateur pour plus de détails sur les différents itérateurs.

Les concepteurs de Boost Abrahams, Siek et Witt ont a présenté un ensemble beaucoup plus fin de concepts d'itérateurs.

8voto

davka Points 3966

Je soupçonne que vous connaissez la réponse assez bien, mais peu importe, ces graphiques sont très utiles pour résoudre ce problème

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X