valor @Checking existe em um std :: map - C ++

Eu seiencontra método @ localiza a chave fornecida emstd :: map e retorne um iterador para o elemento Existe alguma maneira de encontrar o valor e obter um iterador para o elemento? O que eu preciso fazer é verificar se o valor especificado existe no std :: map. Eu fiz isso fazendo um loop de todos os itens no mapa e comparando. Mas eu queria saber se existe uma abordagem melhor para iss

Aqui está o que eu escrevi

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;
}

Edita

Que tal usar outro mapa internamente que armazene valor e combinação de teclas. Então eu posso ligar para encontrar nele? Éencontrar( in std :: map fazendo pesquisa seqüencial?

Obrigad

questionAnswers(10)

yourAnswerToTheQuestion