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 Escriba 1 escrito y segundo elemento el valor predeterminado de Tipo 2escrito.

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.Primera y segundo a _Right.segundo.

El cuarto constructor inicializa primer elemento de pares a _Val1 y segundo a _Val2 mediante Declarador de referencia Rvalue: &&.

Comentarios

Struct de plantilla almacena un par de objetos de Escriba 1 escrito y de Tipo 2, respectivamente.El tipo first_type es igual que el parámetro Escriba 1 de la plantilla y escriba second_type es igual que el parámetro Tipo 2de la plantilla.Escriba 1 y Tipo 2 tendrían proporcionan sólo un constructor predeterminado, un constructor de argumento único, 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 asociado 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

encabezado: <utilidad>

espacio de nombres: std

Vea también

Referencia

Pair Logical Operator

Seguridad para subprocesos de la biblioteca estándar de C++