¿Hay alguna manera de ordenar std :: map por los datos en lugar de la clave? En este momento, mi código duplica todo el mapa en una matriz solo para hacer esto.std :: map ordena por datos?
Respuesta
Por lo que puedo recordar, std::map
le dará el iterador que examinará los elementos ordenados por la clave. La única forma de repasar los elementos ordenados por el valor, y aún usar el mapa, es reescribir toda la colección a otro mapa, con la clave y el valor invertidos.
Encontré que usar un solo vector y simplemente encontrar cosas era mejor. – Jookia
Si lo hace, perderá la información del par clave-valor. –
Señalo la respuesta de Oli Charlesworth en http://stackoverflow.com/a/5056797/158371 –
- 1. std :: map insert o std :: map find?
- 2. Mapping std :: map to Python
- 3. usando BOOST_FOREACH con std :: map
- 4. C++: Heredar de std :: map
- 5. Cómo insertar en std :: map?
- 6. Porting std :: map to C?
- 7. ¿Por qué insertar desde std :: map no quiere actualizar? [C++]
- 8. Ordenando std :: map por valor antes de la salida & destroy
- 9. ¿Es seguro obtener un objeto en std :: map por referencia?
- 10. Cuándo elegir std :: vector over std :: map para datos de valor-clave?
- 11. ¿Están C++ std :: map <string, string> ordenados?
- 12. Usando std :: string como clave para std :: map
- 13. std :: map and -fno-implicit-templates
- 14. const std :: map <boost :: tuples :: tuple, std :: string>?
- 15. Usando char * como clave en std :: map
- 16. Persistencia de std :: map en C++
- 17. std :: map of member function punteros?
- 18. std :: map find_if condición condición confusión
- 19. Requisitos de tipo para std :: map
- 20. std :: map :: emplace() falta - ¿bibliotecas desactualizadas?
- 21. load std :: map from text file
- 22. ¿Cómo funciona el iterador std :: map?
- 23. Isótopo de jQuery: ordena los datos por "grupo"
- 24. ¿`std :: set` ordena los elementos en todos los casos?
- 25. std :: ordena el comportamiento con ints que son iguales
- 26. ¿Cuándo se ordena una std :: priority_queue <>?
- 27. Cómo convertir un std :: list ordenado de std :: pair a un std :: map
- 28. ¿Hay alguna diferencia entre std :: map <int, int> y std :: map <const int, int>?
- 29. Consulta SQL: ordena por longitud de caracteres?
- 30. ¿'Seleccionar' siempre ordena por clave principal?
¿Adivina que necesita otro mapa con la clave/valor invertido? –
No he encontrado una buena solución tampoco. No se puede simplemente intercambiar el mapa (como sugieren muchos) porque dos valores podrían ser iguales, creando un nuevo mapa que podría tener menos elementos. De hecho, ** es imposible ** clasificar un mapa por valor, ya que un mapa está ordenado por clave (de ahí que sea rápido). Incluso si intentas crear un nuevo mapa que esté ordenado, al presionar los valores como un vector, ¡terminarás con un mapa ordenado por clave! La forma en que implementé en mi código fue crear vectores ordenados para cada una de las claves y valores, y usé los vectores en mi aplicación. Para hacer los vectores, primero – user2544830
¿Posible duplicado de [Mapa STL -> ordenar por valor?] (Http://stackoverflow.com/questions/2699060/stl-map-sort-by-value) –