User Tools

Site Tools


cpp:stl:iterator

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cpp:stl:iterator [2021/04/07 10:02]
bmonsuez [L'itérateur : un moyen d'énumérer des valeurs dans une structure de données]
cpp:stl:iterator [2022/11/18 10:48] (current)
Line 88: Line 88:
 qui recherche l'​élément ''​value''​ dans une séquence délimitée par deux itérateurs ''​inputIterator''​ ''​first''​ et ''​last''​. qui recherche l'​élément ''​value''​ dans une séquence délimitée par deux itérateurs ''​inputIterator''​ ''​first''​ et ''​last''​.
  
 +Certains algorithmes de [[https://​en.cppreference.com/​w/​cpp/​header/​algorithm|''<​algorithm>''​]] nécessitent des opérateurs supportant des opérations complémentaires comme par exemple ​
  
 +<code cpp>
 +template<​ class randomIterator>​
 +void sort(randomIterator first, randomIterator last);
 +</​code>​
 +
 +qui classe l'​ensemble des éléments situés dans la séquence délimitée par deux itérateurs ''​first''​ et ''​last''​. Cependant ces itérateurs ne sont pas des itérateurs simples que l'on qualifie [[https://​en.cppreference.com/​w/​cpp/​named_req/​InputIterator|d'​input itérator]] mais des itérateurs supportant des accès par indexation que l'on qualifie [[https://​en.cppreference.com/​w/​cpp/​named_req/​RandomAccessIterator|de random iterator]].
 +
 +===== Les différents types d'​itérateur =====
 +
 +C++ introduit différentes types d'​itérateur qui sont rapidement énumérés ici :
 +
 +|[[https://​en.cppreference.com/​w/​cpp/​named_req/​InputIterator|''​input iterator''​]] | itérateur permettant d'​accéder en lecture à une donnée, supportant l'​opération de comparaison et enfin le passage à l'​élément suivant.|
 +|[[https://​en.cppreference.com/​w/​cpp/​named_req/​OutputIterator|''​input iterator''​]] | itérateur permettant d'​écrire des données par exemple dans un flux supportant le passage à l'​élément suivant.|
 +|[[https://​en.cppreference.com/​w/​cpp/​named_req/​ForwardIterator|''​forward iterator''​]] | ajoute à l'​itérateur ''​input operator''​ la garantie que si ''​a''​ et ''​b''​ sont deux itérateurs de même type, si ''​a == b''​ alors ''​++a == ++b''​.|
 +|[[https://​en.cppreference.com/​w/​cpp/​named_req/​BidirectionalIterator|''​bidirectional iterator''​]] | ajoute à l'​itérateur ''​forward iterator''​ la possibilité de revenir à l'​élément précédent ((''​operator --()''​).|
 +|[[https://​en.cppreference.com/​w/​cpp/​named_req/​RandomAccessIterator|''​random access iterator''​]] | ajoute à l'​itérateur ''​bidirectional iterator''​ la possibilité de se déplacer par saut de x éléments en avant ou en arrière.|
 +
 +Un algorithme peut ne fonctionner qu'​avec un type particulier d'​itérateur. Ainsi un algorithme de tri comme [[https://​gist.github.com/​svdamani/​dc57e4d1b00342d4507d|quicksort ou merge sort]] auront le plus souvent besoin que l'on leur fournissent un ''​random access iterator''​.
  
  
  
  
cpp/stl/iterator.1617789765.txt.gz · Last modified: 2021/04/07 10:02 by bmonsuez