Come verificare se l'iteratore STL punti a qualcosa? [c++]


Answers

Sebbene gli iteratori siano considerati come una forma generale di indicatori, non sono esattamente i puntatori. Lo standard definisce iteratore Past-the-end per indicare l'errore di ricerca nei contenitori. Quindi, non è consigliabile controllare gli iteratori per NULL

Past-the-end valori Past-the-end sono non singolari e nondereferenceable.

if(it != aVector.end())  //past-the-end iterator
    do_something();
Question

Possibile duplicato:
C ++ Il modo migliore per verificare se un iteratore è valido

Voglio fare qualcosa del genere:

std::vector<int>::iterator it;
// /cut/ search for something in vector and point iterator at it. 
if(!it) //check whether found
    do_something(); 

Ma non c'è operatore! per gli iteratori. Come posso verificare se l'iteratore punta a qualcosa?




Credo che questo dovrebbe generalmente darti una buona prova:

if (iterator._Mycont == &MyContainer)
{
Probably a valid iterator!
}

Potresti fare dei test per assicurarti che l'iteratore non sia uguale alla fine ...

iterator != MyContainer.end()

e:

iterator >= MyContainer.begin()