Вы совершенно правы. Я полагаю, что если не выполнять итерацию и поиск по карте вручную, вам следует использовать двунаправленную карту, например, уже предложенный 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 делать последовательный поиск?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос