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ę