Namespaces
Variants

std::experimental::ranges:: ForwardIterator

From cppreference.net
Défini dans l'en-tête <experimental/ranges/iterator>
template < class I >

concept bool ForwardIterator =
InputIterator < I > &&
DerivedFrom < ranges :: iterator_category_t < I > , ranges :: forward_iterator_tag > &&
Incrementable < I > &&

Sentinel < I, I > ;
(ranges TS)

Le concept ForwardIterator<I> affine InputIterator en ajoutant la comparaison d'égalité et la garantie multi-passage.

Le domaine de == pour les itérateurs avant est celui des itérateurs sur la même séquence sous-jacente, sauf que les itérateurs initialisés par défaut du même type peuvent être comparés entre eux et doivent être égaux.

Les pointeurs et références obtenus à partir d'un itérateur avant dans une plage [ i , s ) doivent rester valides tant que [ i , s ) continue de désigner une plage.

Soient a et b deux itérateurs déréférençables de type I . ForwardIterator<I> est satisfait seulement si :

  • a == b implique ++ a == ++ b ; et
  • L'expression ( [ ] ( X x ) { ++ x ; } ( a ) , * a ) est équivalente à * a , c'est-à-dire que l'incrémentation d'une copie de a n'a aucun effet sur le résultat du déréférencement de a .

Ceci est connu sous le nom de multi-pass guarantee .

Notes

Un itérateur avant ne peut pas être « de mise en cache » : il ne peut pas retourner une référence à un objet qu'il contient, car de telles références seraient invalidées par la destruction de l'itérateur avant.