Soy consciente de que el mapa no está preparado para ser ordenado, está muy optimizado para acceso rápido y aleatorio a las claves, y en realidad no es compatible con std :: sort.Ordenando std :: map por valor antes de la salida & destroy
Mi problema actual es que tengo una completa
map<std::string,int>
que yo no voy a usar nunca más, sólo hay que extraer 10 pares de valor (int) orden y destruirlo.
Lo mejor si fuera posible sería ordenarlo en su lugar y luego repetirlo 10 veces, pero aparentemente no es una solución.
Estoy probando diferentes soluciones como ir a través de un multimap (para permitir duplicar las claves) pero me gustaría saber si hay una solución más elegante, utilizando algoritmos STL tanto como sea posible.
EDIT:
estoy usando un mapa porque para el 99% de las veces que lo necesite como un mapa, las búsquedas rápidas clave para aumentar los valores. Solo necesito una buena forma de extraer más tarde en orden de valores cuando ya no necesite el mapa.
enfoque actual whould ser:
- std :: copiar el mapa (std :: string, int) a un vector (par (std :: string, int))
- especie del vector
- obtener los primeros 10 valores
- destruyen vector y correspondencia
Sus requisitos no están muy claros para mí. IIUC, ¿necesita encontrar 10 entradas en el mapa _por su valor_ en lugar de su clave? Y una vez que los tengas, ¿qué vas a hacer con ellos? Lo pregunto porque "destruir" es un término vago y no puedo adivinar el significado para un 'std :: pair'. ¿Deben eliminarse del mapa? (Probablemente no, ya que dijiste que ya no necesitas el mapa. ¿Pero qué más?) –
sbi
El mapa se va a destruir, así que no me importa lo que suceda más tarde, solo necesito tener esos 10 valores –