Classificando um std :: map pelo valor antes de output & destroy

Estou ciente de que o mapa não está preparado para ser classificado. É altamente otimizado para acesso rápido e aleatório a chaves e, na verdade, não suportastd::sort.

Meu problema atual é que eu tenho um completomap<std::string,int> que eu não vou mais usar. Eu só preciso extrair 10 pares emvalue(int) ordenar e destruí-lo.

A melhor coisa, se fosse possível, seria classificá-lo no lugar e depois iterar 10 vezes, mas isso aparentemente não é uma solução.

Estou tentando soluções diferentes como passar por ummultimap<int,string> (para permitir chaves duplicadas), mas eu gostaria de saber se existe uma solução mais elegante, usando algoritmos stl tanto quanto possível.

EDITAR:

Estou usando um mapa porque, para 99% do tempo, preciso dele como um mapa: pesquisas de chave rápida para aumentar os valores. Só preciso de uma boa maneira de extrair mais tarde a ordem de valor quando não preciso mais do mapa.

A abordagem atual deveria ser:

std::copy amap(std::string,int) para umvector(pair(std::string,int))ordenar o vetorobter os primeiros 10 valoresdestruir vetor e mapa

questionAnswers(5)

yourAnswerToTheQuestion