Hemos discutido map en C++ STL y multimap en C++ STL . El comportamiento predeterminado de estas estructuras de datos es almacenar elementos en orden ascendente. ¿Cómo almacenar elementos en orden inverso o descendente al insertar en mapa y multimapa?
Podemos usar el tercer parámetro, que es std::greater junto con map y multimap para almacenar elementos en orden descendente.
Orden descendente en el mapa:
Un mapa almacena pares clave-valor. Se utiliza un BST de autoequilibrio (típicamente árbol rojo-negro) para implementarlo.
Sintaxis:
map<key_datatype, value_datatype, greater<int> > mapName;
Ejemplo:
Input : (10, "queen"), (20, "rose"), (5," lion") Output : (20, "rose"), (10, "queen"), (5," lion")
Aquí, queremos guardar los elementos en orden descendente, es decir, 20> 10> 5.
CPP
// C++ program makes a map to store // elements in descending order #include <bits/stdc++.h> using namespace std; // Driver Code int main() { map<int, string, greater<int> > mymap; // Inserting the elements one by one mymap.insert(make_pair(10, "queen")); mymap.insert(make_pair(20, "rose")); mymap.insert(make_pair(5, " lion")); // begin() returns to the first value of map map<int, string>::iterator it; for (it = mymap.begin(); it != mymap.end(); it++) cout << "(" << (*it).first << ", " << (*it).second << ")" << endl; return 0; }
(20, rose) (10, queen) (5, lion)
Aquí, si se usa great<int> para asegurarse de que los elementos se almacenen en orden descendente de claves. Además, aquí se han utilizado las siguientes funciones:
- insert(): Inserta elementos en el contenedor del mapa.
- begin(): Devuelve un iterador al primer elemento del mapa
- end(): Devuelve un iterador al elemento teórico que sigue al último elemento en el mapa
Orden descendente en multimapa:
Multimapa es similar a un mapa con la adición de que varios elementos pueden tener las mismas claves. En lugar de que cada elemento sea único, el par clave-valor y valor asignado tienen que ser únicos en este caso.
Sintaxis:
multimap<key_datatype, value_datatype, greater<int> > multimapName;
Ejemplo:
Input : (10, "queen"), (20, "rose"), (5," lion"), (20, "van"), (20, "watch"), (5, "joker") Output : (20, rose), (20, van), (20, watch), (10, queen), (5, lion), (5, joker)
CPP
// C++ program makes a multimap to store // elements in descending order. #include <bits/stdc++.h> using namespace std; // Driver Code int main() { multimap<int, string, greater<int> > mymap; // Inserting the elements one by one mymap.insert(make_pair(10, "queen")); mymap.insert(make_pair(20, "rose")); mymap.insert(make_pair(5, " lion")); mymap.insert(make_pair(20, "van")); // Duplicates allowed mymap.insert(make_pair(20, "watch")); mymap.insert(make_pair(5, "joker")); // begin() returns to the first value of multimap. multimap<int, string>::iterator it; for (it = mymap.begin(); it != mymap.end(); it++) cout << "(" << (*it).first << ", " << (*it).second << ")" << endl; return 0; }
(20, rose) (20, van) (20, watch) (10, queen) (5, lion) (5, joker)
Aquí, si se usa great<int> para asegurarse de que los elementos se almacenen en orden descendente de claves. Además, aquí se han utilizado las siguientes funciones:
- insert(): Inserta elementos en el contenedor del mapa.
- begin(): Devuelve un iterador al primer elemento del mapa
- end(): Devuelve un iterador al elemento teórico que sigue al último elemento en el mapa
Este artículo es una contribución de Jatin Goyal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA