2010-09-04 62 views
1

J'utilise une stl multimap, je itère ma carte et je n'ai pas trouvé l'objet que je voulais dans la carte, maintenant je veux vérifier si mon itérateur détient la chose que je voulu ou pas et j'ai des difficultés avec lui parce que ce n'est pas nul ou quelque chose. merci!Comment vérifier si mon itérateur ne se trouve sur rien

+0

est-il égal à map.end()? map.end() est un passé le dernier index, donc techniquement n'est pas dans l'énumération –

Répondre

8

Si elle ne trouve pas la chose que vous voulez, elle doit être égale à l'itérateur renvoyé par la méthode end() du conteneur.

Alors:

iterator it = container.find(something); 
if (it == container.end()) 
{ 
    //not found 
    return; 
} 
//else found 
0

Pourquoi vous itérer sur votre carte pour trouver quelque chose, vous devriez aller comme ChrisW pour trouver une clé dans votre carte ...

Mmm, vous essayez de trouver la valeur dans votre carte et non la clé? Alors vous devriez faire:

map<int, string> myMap; 
myMap[1] = "one"; myMap[2] = "two"; // etc. 

// Now let's search for the "two" value 
map<int, string>::iterator it; 
for(it = myMap.begin(); it != myMap.end(); ++ it) { 
    if (it->second == "two") { 
     // we found it, it's over!!! (you could also deal with the founded value here) 
     break; 
    } 
} 
// now we test if we found it 
if (it != myMap.end()) { 
    // you also could put some code to deal with the value you founded here, 
    // the value is in "it->second" and the key is in "it->first" 
}