Вы совершенно правы. Я полагаю, что если не выполнять итерацию и поиск по карте вручную, вам следует использовать двунаправленную карту, например, уже предложенный Boost.MultiIndex.
юнаходить метод находит указанный ключ встанд :: Карта и вернуть итератор для элемента. Есть ли способ найти значение и получить итератор для элемента? Что мне нужно сделать, это проверить, что указанное значение существует в std :: map. Я сделал это путем зацикливания всех элементов на карте и сравнения. Но я хотел знать, есть ли лучший подход к этому.
Вот что я написал
bool ContainsValue(Type_ value)
{
bool found = false;
Map_::iterator it = internalMap.begin(); // internalMap is std::map
while(it != internalMap.end())
{
found = (it->second == value);
if(found)
break;
++it;
}
return found;
}
редактировать
Как насчет использования другой карты внутри, которая хранит значение, комбинацию клавиш. Так я могу позвонить найти по нему? Являетсянаходить() в std :: map делать последовательный поиск?
Спасибо