Un itérateur est un objet qui peut traverser (itérer sur) un container en maintenant un pointeur sur l'élément courant.
On n'est donc pas obligé de parcourir le container depuis le début pour passer de l'élément $n$ à l'élément $n+1$
La STL définit des types d'itérateurs différents en fonction des algorithmes de traitement :
template <typename InputIterator, typename T>
InputIterator find(InputIterator first, InputIterator last, const T& value) {
while (first != last && *first != value) {
++first;
}
return first;
}
template <typename InputIterator, typename OutputIterator>
OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result) {
while (first != last && *first != value) {
*result = *first;
++first;
++result;
}
return result;
}
template <typename ForwardIterator, typename T>
void replace(ForwardIterator first, ForwardIterator last, const T& x, const T&y) {
while (first != last && *first != value) {
if (*first == x) *first = y;
++first;
}
}
template<typename BidirIt>
void reverse(BidirIt first, BidirIt last) {
while ((first != last) && (first != --last)) {
std::iter_swap(first++, last);
}
}
Il peut être vu comme un pointeur sur un élément d'un container et utilise des fonctions comme :
Chaque container possède 4 fonctions à utiliser avec les itérateurs :
Chaque container possède au moins 2 types d'itérateurs :