c++ vector - Come verificare se l'iteratore STL punti a qualcosa?




2 Answers

Non puoi Il solito idioma è usare l'iteratore finale del contenitore come un indicatore "non trovato". Questo è ciò che std::find restituisce.

std::vector<int>::iterator i = std::find(v.begin(), v.end(), 13);
if (i != v.end())
{
     // ...
}

L'unica cosa che puoi fare con un iteratore non assegnato è assegnargli un valore.

example list

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?




Se si desidera utilizzare iteratore in un ciclo, il modo più sicuro per utilizzarlo è in questo modo:

for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it)
{
 do_smth();
}



Related

c++ stl iterator