Orden descendente en Map y Multimap de C++ STL

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;
}
Producción

(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;
}
Producción

(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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *