Diferencia entre par en Multiset y Multimap en C++ STL

Pares en C++ : el contenedor de pares es un contenedor simple definido en el encabezado <utilidad> que consta de dos elementos de datos u objetos. Se hace referencia al primer elemento como ‘primero’ y al segundo elemento como ‘segundo’ y el orden es fijo (primero, segundo). Par se utiliza para combinar dos valores que pueden ser de tipo diferente. Pair proporciona una forma de almacenar dos objetos heterogéneos como una sola unidad.

Sintaxis:

par (tipo_datos1, tipo_datos2) nombre_par ;

Multiset en C++ : Multiset es un tipo de contenedor asociativo que almacena elementos siguiendo un orden específico, y donde múltiples elementos pueden tener los mismos valores.

Sintaxis:

multiset <tipo_datos> Multiset_name;

Multimap : Multi-mapa es un tipo de contenedor asociativo que es similar al mapa con la excepción de que varios elementos pueden tener las mismas claves.

Sintaxis:

multimapa <tipo_datos1, tipo_datos2> nombre_multimapa 
 

¿Cuál es la diferencia entre par en conjunto múltiple y mapa múltiple en C++ STL ?

El comportamiento predeterminado de estas dos estructuras de datos, multiconjunto y multimapa, es almacenar elementos en orden ascendente. Cuando se crea un par de conjuntos múltiples , de forma predeterminada, ordenará todos los pares en orden creciente de acuerdo con el primer elemento de todos los pares y si el primer elemento de dos o más de dos pares es igual , ordenará el par. según el segundo elemento del par .

Cuando se crea un par de mapas múltiples  , de forma predeterminada, ordenará todos los pares en orden creciente de acuerdo con el primer elemento de todos los pares y si el primer elemento de dos o más de dos pares es igual, imprimirá el par según el orden de inserción al par de multimapa.

A continuación se muestran los programas para ilustrar la diferencia:

Programa 1: Par en multi-set 
 

CPP

// C++ program print the data of
// multiset by inserting using pair
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the data stored
// in pair of multiset
void printData(multiset<pair<int, string> > gfg)
{
 
    // Declare iterator
    multiset<pair<int, string> >::iterator i;
 
    // Iterate through pair of multiset
    for (i = gfg.begin(); i != gfg.end(); ++i) {
 
        // Print the pairs
        cout << i->first << " "
<< i->second << endl;
    }
}
 
// Driver Code
int main()
{
    // Declare pair of multiset
    multiset<pair<int, string> > gfg;
 
    // Insert Data
    gfg.insert(make_pair(1, "yukti"));
    gfg.insert(make_pair(2, "umang"));
    gfg.insert(make_pair(3, "vinay"));
    gfg.insert(make_pair(3, "vijay"));
    gfg.insert(make_pair(4, "kanak"));
 
    // Function call to print the data
    printData(gfg);
    return 0;
}

Explicación:
En el programa anterior, hemos creado pares de enteros y strings en los que los nombres se emparejan con cada entero y se insertan en el conjunto múltiple . De acuerdo con el comportamiento predeterminado de los conjuntos múltiples, los datos se organizan en orden ascendente según el primer elemento, pero cuando el primer elemento es el mismo , los organizará según el segundo valor . Para el par (3, «vijay») y (3, «vinay»), el primer elemento del par , es decir, 3 es el mismo tanto para «vijay» como para «vinay» , por lo que organizará los pares de acuerdo con el segundo elemento «vijay». ” luego “vinay”(en secuencia alfabética).

Programa 2: Emparejar en multimapa
 

CPP

// C++ program print the data of
// multimap by inserting using pair
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the data stored
// in pair of multimap
void printData(multimap<int, string> gfg)
{
 
    // Declare iterator
    multimap<int, string>::iterator i;
 
    // Iterate through pair of multiset
    for (i = gfg.begin(); i != gfg.end(); ++i) {
 
        // Print the pairs
        cout << i->first << " "
<< i->second << endl;
    }
}
 
// Driver Code
int main()
{
    // Declare pair of multimap
    multimap<int, string> gfg;
 
    // Insert data
    gfg.insert(make_pair(1, "yukti"));
    gfg.insert(make_pair(2, "umang"));
    gfg.insert(make_pair(3, "vinay"));
    gfg.insert(make_pair(3, "vijay"));
    gfg.insert(make_pair(4, "kanak"));
 
    // Function call to print the data
    printData(gfg);
 
    return 0;
}
Producción

1 yukti
2 umang
3 vinay
3 vijay
4 kanak

Explicación del código anterior:
en el programa anterior, hemos insertado nuevamente los mismos pares pero esta vez en multi-mapa . De acuerdo con el comportamiento predeterminado de los mapas múltiples, los datos se organizan en orden ascendente según la clave, pero cuando la clave es la misma, a diferencia del conjunto múltiple , verá la precedencia de qué elemento se inserta primero y luego se organizará de acuerdo con esa secuencia. Entonces, como en la salida que se muestra, podemos ver que como la clave 3 es la misma para «vinay» y «vijay» , seguirá la secuencia en la que los paresse insertaron en el mapa múltiple , por eso, «vinay» apareció primero antes de «vijay» en la salida.
 

Diferenciación tabular: 
 

Emparejar en Multiset multimapa
En par de multiconjunto, el par se usa para asignar una clave con un valor específico. El comportamiento predeterminado es insertar el elemento como un par clave-valor.
Cuando se crea un par de un conjunto múltiple, de forma predeterminada, ordenará todos los pares en orden creciente de acuerdo con el primer elemento de todos los pares y si el primer elemento de dos o más de dos pares es igual, ordenará el par de acuerdo con el segundo elemento del par. Cuando se crea un par de un mapa múltiple, de forma predeterminada, ordenará todos los pares en orden creciente de acuerdo con el primer elemento de todos los pares y si el primer elemento de dos o más de dos pares son iguales, imprimirá el par según el orden de inserción al par de multimapa.

Sintaxis: 
 

multiset<par<int, string> > M; 
 

 

Sintaxis: 
 

multimapa<int, string> M; 
 

 

La complejidad temporal de insertar un par en Multiset es O (log N) La complejidad de tiempo de insertar un par en Multimap es O (log N)
La complejidad temporal de eliminar pares en Multiset es O(N) La complejidad del tiempo de eliminación de pares en Multimap varía y no se especifica. 

Publicación traducida automáticamente

Artículo escrito por yagyeshbagaya 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 *