Sortowanie wartości std :: map według wartości przed wyjściem i zniszczeniem

Wiem, że mapa nie jest przygotowana do sortowania. Jest zoptymalizowany pod kątem szybkiego i losowego dostępu do klucza i nie obsługujestd::sort.

Mój obecny problem polega na tym, że mam pełnymap<std::string,int> których już nie zamierzam używać. Muszę tylko wydobyć 10 parvalue(int) zamów i zniszcz go.

Najlepszą rzeczą, gdyby to było możliwe, byłoby uporządkowanie go, a następnie iteracja 10 razy, ale najwyraźniej nie jest to rozwiązanie.

Próbuję różnych rozwiązań, przechodząc przezmultimap<int,string> (aby zezwolić na duplikaty kluczy), ale chciałbym wiedzieć, czy istnieje bardziej eleganckie rozwiązanie, wykorzystujące algorytmy stl w jak największym stopniu.

EDYTOWAĆ:

Używam mapy, ponieważ przez 99% czasu potrzebuję jej jako mapy: szybkie wyszukiwanie kluczy w celu zwiększenia wartości. Wystarczy dobry sposób późniejszego wyodrębnienia w kolejności wartości, gdy nie potrzebuję już mapy.

Obecne podejście powinno być:

std::copy map(std::string,int) do avector(pair(std::string,int))posortuj wektorzdobądź pierwszych 10 wartościzniszczyć wektor i mapę

questionAnswers(5)

yourAnswerToTheQuestion