El par se utiliza para combinar dos valores que pueden ser de diferentes tipos de datos. Pair proporciona una forma de almacenar dos objetos heterogéneos como una sola unidad. Básicamente se usa si queremos almacenar tuplas. El contenedor de pares es un contenedor simple definido en encabezado que consta de dos elementos u objetos de datos.
- Se hace referencia al primer elemento como 'primero' y al segundo elemento como 'segundo' y el orden es fijo (primero, segundo).
- El par se puede asignar, copiar y comparar. El conjunto de objetos asignados en un mapa o hash_map es de tipo 'par' de forma predeterminada, en el que todos los 'primeros' elementos son claves únicas asociadas con sus objetos de 'segundo' valor.
- Para acceder a los elementos, utilizamos el nombre de la variable seguido del operador de punto seguido de la palabra clave primero o segundo.
Sintaxis:
pair Pair_name>
CPP
// CPP program to illustrate Pair in STL> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >// defining a pair> >pair<>int>,>char>>PAR1;> >// first part of the pair> >PAIR1.first = 100;> >// second part of the pair> >PAIR1.second =>'G'>;> >cout << PAIR1.first <<>' '>;> >cout << PAIR1.second << endl;> >return> 0;> }> |
>
>Producción
100 G>
Inicializando un par: También podemos inicializar un par.
Sintaxis:
pair Pair_name (value1, value2) ;>
Diferentes formas de inicializar el par:
pair g1; //default pair g2(1, 'a'); //initialized, different data type pair g3(1, 10); //initialized, same data type pair g4(g3); //copy of g3>
Otra forma de inicializar un par es mediante la función make_pair().
g2 = make_pair(1, 'a');>
Otra sintaxis válida para declarar par es:
g2 = {1, 'a'};> CPP
instalación experta
// CPP program to illustrate> // Initializing of pair STL> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >// defining a pair> >pairdouble>PAR2('GeeksForGeeks', 1.23); corte<< PAIR2.first << ' '; cout << PAIR2.second << endl; return 0; }> |
>
>Producción
GeeksForGeeks 1.23>
Nota: Si no se inicializa, el primer valor del par se inicializa automáticamente.
C++
// CPP program to illustrate> // auto-initializing of pair STL> #include> #include> using> namespace> std;> int> main()> {> >pair<>int>,>double>>PAR1;> >pairchar>PAR2; // se inicializa a 0 cout<< PAIR1.first; // it is initialised to 0 cout << PAIR1.second; cout << ' '; // // it prints nothing i.e NULL cout << PAIR2.first; // it prints nothing i.e NULL cout << PAIR2.second; return 0; }> |
>
>
Producción:
puntero de desreferencia
00>
Funciones de los miembros
1) hacer_par() : Esta función de plantilla permite crear un par de valores sin escribir los tipos explícitamente.
Sintaxis:
Pair_name = make_pair (value1,value2);>
CPP
// CPP Program to demonstrate make_pair()> // function in pair> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>int>,>char>>PAR1;> >pairdouble>PAR2('GeeksForGeeks', 1.23); pardoble>PAR3; PAR1.primero = 100; PAR1.segundo = 'G'; PAIR3 = make_pair('GeeksForGeeks es el mejor', 4.56); corte<< PAIR1.first << ' '; cout << PAIR1.second << endl; cout << PAIR2.first << ' '; cout << PAIR2.second << endl; cout << PAIR3.first << ' '; cout << PAIR3.second << endl; return 0; }> |
>
>Producción
100 G GeeksForGeeks 1.23 GeeksForGeeks is Best 4.56>
2) intercambiar: Esta función intercambia el contenido de un objeto par con el contenido de otro objeto par. Los pares deben ser del mismo tipo.
Sintaxis:
java obtener fecha actual
pair1.swap(pair2) ;>
Para dos pares dados, digamos par1 y par2 del mismo tipo, la función de intercambio intercambiará el par1.primero con el par2.primero y el par1.segundo con el par2.segundo.
CPP
// CPP Program to demonstrate swap()> // function in pair> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>char>,>int>>par1 = hacer_par(>'A'>, 1);> >pair<>char>,>int>>par2 = hacer_par(>'B'>, 2);> >cout <<>'Before swapping:
'>;> >cout <<>'Contents of pair1 = '> << pair1.first <<>' '> ><< pair1.second;> >cout <<>'Contents of pair2 = '> << pair2.first <<>' '> ><< pair2.second;> >pair1.swap(pair2);> >cout <<>'
After swapping:
'>;> >cout <<>'Contents of pair1 = '> << pair1.first <<>' '> ><< pair1.second;> >cout <<>'Contents of pair2 = '> << pair2.first <<>' '> ><< pair2.second;> >return> 0;> }> |
>
>Producción
Before swapping: Contents of pair1 = A 1Contents of pair2 = B 2 After swapping: Contents of pair1 = B 2Contents of pair2 = A 1>
3) empate(): Esta función funciona igual que en tuplas . Crea una tupla de referencias de valor l a sus argumentos, es decir, para descomprimir los valores de la tupla (o aquí el par) en variables separadas. Al igual que en las tuplas, aquí también hay dos variantes del empate, con y sin ignorar. ignorar la palabra clave ignora un elemento de tupla en particular para que no se descomprima.
Sin embargo, las tuplas pueden tener múltiples argumentos pero los pares solo tienen dos argumentos. Entonces, en el caso de un par de pares, el desempaquetado debe manejarse explícitamente.
Sintaxis:
tie(int &, int &) = pair1;>
CPP
// CPP code to illustrate tie() in Pair> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>int>,>int>>par1 = { 1, 2 };> >int> a, b;> >tie(a, b) = pair1;> >cout << a <<>' '> << b <<>'
'>;> >pair<>int>,>int>>par2 = { 3, 4 };> >tie(a, ignore) = pair2;> >// prints old value of b> >cout << a <<>' '> << b <<>'
'>;> >// Illustrating pair of pairs> >pair<>int>, pair<>int>,>char>>> par3 = { 3, { 4,>'a'> } };> >int> x, y;> >char> z;> >// tie(x,y,z) = pair3; Gives compilation error> >// tie(x, tie(y,z)) = pair3; Gives compilation error> >// Each pair needs to be explicitly handled> >tie(x,ignore) = pair3;> >tie(y, z) = pair3.second;> >cout << x <<>' '> << y <<>' '> << z <<>'
'>;> }> // contributed by sarthak_eddy.> |
>
>Producción
1 2 3 2 3 4 a>
Código para ilustrar funciones en pares:
CPP
np.dónde
// CPP program to illustrate pair in STL> #include> #include> #include> using> namespace> std;> int> main()> {> >pairint>g1; pairint> g2('Cuestionario', 3); parint> g3(g2); par |
>
>Producción
This is pair g1 with value Geeks. This is pair g3 with value QuizThis pair was initialized as a copy of pair g2 This is pair g2 with value .com The values of this pair were changed after initialization. This is pair g4 with values 5 and 10 made for showing addition. The sum of the values in this pair is 15. We can concatenate the values of the pairs g1, g2 and g3 : GeeksQuiz.com We can also swap pairs (but type of pairs should be same) : Before swapping, g1 has Geeks and g2 has .com After swapping, g1 has .com and g2 has Geeks>
Complejidad del tiempo: O(1).
Espacio auxiliar: O(1).
operadores (=, ==, !=,>=, <=) en par
También podemos utilizar operadores con pares.
1) usando igual(=): Asigna un nuevo objeto para un objeto par. Sintaxis:
pair& operator= (const pair& pr);>
Esto asigna pr como el nuevo contenido para el objeto par. Al primer valor se le asigna el primer valor de pr y al segundo valor se le asigna el segundo valor de pr.
2) Operador de comparación (==) con par: Para los dos pares dados, digamos par1 y par2, el operador de comparación compara el primer valor y el segundo valor de esos dos pares, es decir, si par1.primero es igual a par2.primero o no y si par1.segundo es igual a par2.segundo o no .
es decir, si ((pari1.first ==pair2.first) && (pair1.segundo==par2.segundo))
Si alguna de las dos condiciones es falsa, devuelve falsa; de lo contrario, es verdadera.
3) Operador no igual (!=) con par: Para los dos pares dados, digamos par1 y par2, el operador != compara los primeros valores de esos dos pares, es decir, si par1.primero es igual a par2.primero o no, si son iguales, verifica los segundos valores de ambos.
4) Operadores lógicos (>=, <=) con par: Para los dos pares dados, digamos par1 y par2, =,>, también se puede usar con pares. Devuelve 0 o 1 comparando solo el primer valor del par. Para pares como p1=(1,20) y p2=(1,10) p2
&list=PLqM7alHXFySGg6GSRmE2INI4k8fPH5qVB