pair Structure
Struct que proporciona la capacidad de tratar dos objetos como un solo objeto.
template<class Type1, class Type2>
struct pair
{
typedef Type1 first_type;
typedef Type2 second_type;
Type1 first;
Type2 second;
pair( );
pair(
const Type1& __Val1,
const Type2& __Val2
);
template<class Other1, class Other2>
pair(
const pair<Other1, Other2>& _Right
);
template<class Other1, class Other2>
pair(
Other1&& _Val1, Other2&& _Val2
);
};
Parámetros
_Val1
Valor que inicializa el primer elemento de pair._Val2
Valor que inicializa el segundo elemento de pair._Right
Un par cuyos valores se deben usar para inicializar los elementos de otros pares.
Valor devuelto
El primer constructor (predeterminado) inicializa primer elemento de pares en el valor predeterminado de Type1 escrito y segundo elemento el valor predeterminado de Type2escrito.
El segundo constructor inicializa primer elemento de pares a _Val1 y segundo a _Val2.
El tercer constructor (de plantilla) inicializa primer elemento de pares a _Right.first y segundo a _Right.second.
El cuarto constructor inicializa primer elemento de pares a _Val1 y segundo a _Val2 mediante Declarador de referencia a un valor R: &&.
Comentarios
Struct de plantilla almacena un par de objetos de Type1 escrito y de Type2, respectivamente. El tipo first_type es igual que el parámetro Type1 de la plantilla y escriba second_type es igual que el parámetro Type2de la plantilla. Type1 y Type2 tendrían proporcionan sólo un constructor predeterminado, un constructor de solo- argumento, y el destructor. Todos los miembros del tipo pair son públicos, porque se declare el tipo como struct en lugar de como clase. Dos el comunes utilizan para un par son los tipos de valor devuelto para las funciones que devuelven dos valores y como elementos para las clases asociativas clase de mapa y clase de multimap de contenedor que tienen una clave y un tipo de valor asociados a cada elemento. Este último cumple los requisitos para un contenedor asociativa de pares y tiene un tipo de valor del formulario pair<const key_type, mapped_type>.
Ejemplo
// utility_pair.cpp
// compile with: /EHsc
#include <utility>
#include <map>
#include <iomanip>
#include <iostream>
int main( )
{
using namespace std;
// Using the constructor to declare and initialize a pair
pair <int, double> p1 ( 10, 1.1e-2 );
// Compare using the helper function to declare and initialize a pair
pair <int, double> p2;
p2 = make_pair ( 10, 2.22e-1 );
// Making a copy of a pair
pair <int, double> p3 ( p1 );
cout.precision ( 3 );
cout << "The pair p1 is: ( " << p1.first << ", "
<< p1.second << " )." << endl;
cout << "The pair p2 is: ( " << p2.first << ", "
<< p2.second << " )." << endl;
cout << "The pair p3 is: ( " << p3.first << ", "
<< p3.second << " )." << endl;
// Using a pair for a map element
map <int, int> m1;
map <int, int>::iterator m1_Iter;
typedef pair <int, int> Map_Int_Pair;
m1.insert ( Map_Int_Pair ( 1, 10 ) );
m1.insert ( Map_Int_Pair ( 2, 20 ) );
m1.insert ( Map_Int_Pair ( 3, 30 ) );
cout << "The element pairs of the map m1 are:";
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
cout << " ( " << m1_Iter -> first << ", "
<< m1_Iter -> second << " )";
cout << "." << endl;
// Using pair as a return type for a function
pair< map<int,int>::iterator, bool > pr1, pr2;
pr1 = m1.insert ( Map_Int_Pair ( 4, 40 ) );
pr2 = m1.insert ( Map_Int_Pair (1, 10 ) );
if( pr1.second == true )
{
cout << "The element (4,40) was inserted successfully in m1."
<< endl;
}
else
{
cout << "The element with a key value of\n"
<< " ( (pr1.first) -> first ) = " << ( pr1.first ) -> first
<< " is already in m1,\n so the insertion failed." << endl;
}
if( pr2.second == true )
{
cout << "The element (1,10) was inserted successfully in m1."
<< endl;
}
else
{
cout << "The element with a key value of\n"
<< " ( (pr2.first) -> first ) = " << ( pr2.first ) -> first
<< " is already in m1,\n so the insertion failed." << endl;
}
}
Requisitos
utilidad <deEncabezado: >
Espacio de nombres: std