Как проверить, стоит ли мой итератор на ничего
Вопрос
Я использую MultiMap STL, я повторяю свою карту, и я не нашел объекта, который я хотел внутри карты, теперь я хочу проверить, проведет ли мой итератор, что я хотел, и у меня есть трудности, потому что Это не ноль или что-то. Спасибо!
Решение
Если это не найдет то, что вы хотите, то он должен равный итератор, возвращенный end()
Способ контейнера.
Так:
iterator it = container.find(something);
if (it == container.end())
{
//not found
return;
}
//else found
Другие советы
Почему вы итаите по своей карте, чтобы найти что-то, вы должны пойти как 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"
}
Не связан с StackOverflow