2010-09-04 3 views
1

Я использую multimap stl, i итерацию моей карты, и я не нашел объект, который мне нужен внутри карты, теперь я хочу проверить, не содержит ли мой итератор вещь i хотел или нет, и у меня возникают трудности с ним, потому что это не нуль или что-то в этом роде. спасибо!Как проверить, не ли мой итератор стоит ни на что

+0

Он равен map.end()? map.end() - один за последним индексом, поэтому технически не входит в перечисление –

ответ

8

Если он не находит нужную вам вещь, он должен равняться итератору, возвращаемому методом контейнера end().

Итак:

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

Почему вы итерацию над картой, чтобы найти что-то, вы должны идти, как ChrisW, чтобы найти ключ в вашей карте ...

Ммм, вы пытаетесь найти значение на вашей карте, а не ключ? Тогда вы должны сделать:

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" 
} 
Смежные вопросы