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; }
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:
|
Sintaxis:
|
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