sort - C++ std:: mapea elementos en orden descendente de teclas
sort a map by value c++ (2)
Use un comparador personalizado cuando el orden predeterminado no lo haga por usted.
Lo pasa como el tercer parámetro de la plantilla (que normalmente se establece de forma predeterminada en std::less<KeyType>
).
En su caso, puede usar std::greater
:
std::map<int, int, std::greater<int> > m;
Código de ejemplo:
#include <map>
#include <iostream>
#include <functional>
int main() {
std::map<int, int, std::greater<int>> m { {-1, 77}, {0, 42}, {1, 84} };
for (const auto& p : m)
std::cout << ''['' << p.first << '','' << p.second << "]/n";
}
Resultado resultante:
[1,84]
[0,77]
[-1,42]
Cómo uso el contenedor std :: map con valor clave en orden descendente.
Como ejemplo, si se insertan los siguientes elementos:
[2 , 5]
[1 , 34]
[3 , 67]
Se ordenarán en el mapa como:
position 0: [1, 34]
position 1: [2, 5]
position 2: [3, 67]
Puedo recorrer el mapa de manera inversa, pero supongamos que la próxima vez que inserte [-1, 60]. ¿Se colocará en la primera posición?
std::map
ya está ordenado, por lo que solo es necesario recorrer el mapa usando un reverse_iterator
.
Un mapa, sin embargo, no es una matriz. No hay tal cosa como "la posición n-th" en un mapa. ( std::map
se implementa más comúnmente usando algún tipo de árbol de búsqueda binario). Si absolutamente, inevitablemente necesita especificar el orden manualmente, entonces use un std::vector<std::pair>
.