Par convention, un "NULL itérateur" pour les conteneurs, qui est utilisé pour indiquer l'absence de résultat, compare égal au résultat de l' container.end()
.
std::vector<X>::iterator iter = std::find(my_vec.begin(), my_vec.end(), x);
if (iter == my_vec.end()) {
//no result found; iter points to "nothing"
}
Cependant, depuis un défaut construit conteneur itérateur n'est pas associé avec n'importe quel récipient, il n'y a pas de bonne valeur, cela pourrait prendre. Donc c'est juste une variable non initialisée et la seule opération à faire est d'attribuer un valide itérateur pour elle.
std::vector<X>::iterator iter; //no particular value
iter = some_vector.begin(); //iter is now usable
Pour d'autres types d'itérateurs cela pourrait ne pas être vrai. E. g dans le cas d' istream_iterator
, une valeur par défaut-construit itérateur représente (compare égal à) un istream_iterator
qui a atteint les expressions du FOLKLORE d'un flux d'entrée.