Partager via


pair Structure

Un struct qui fournit la capacité de gérer deux objets comme un objet unique.

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
      );
   };

Paramètres

  • _Val1
    Valeur de l'initialisation du premier élément d' pair.

  • _Val2
    Valeur de l'initialisation du deuxième élément d' pair.

  • _Right
    Une paire dont les valeurs doivent être utilisées pour initialiser les éléments des autres paires.

Valeur de retour

Le premier constructeur (par défaut) initialise le premier élément de la paire à la valeur par défaut du type Type1 et le deuxième élément à la valeur par défaut du type Type2.

Le deuxième constructeur initialise le premier élément des paires de _Val1 et ensuite à _Val2.

Le troisième constructeur (modèle) initialise le premier élément des paires de _Right.first et ensuite à _Right.second.

Le quatrième constructeur initialise le premier élément des paires de _Val1 et ensuite à _Val2 à l'aide de Déclarateur de référence Rvalue : &&.

Notes

La structure de modèle stocke une paire d'objets de type Type1 et Type2, respectivement.Le type first_type est le même que le paramètre Type1 de modèle et le type second_type est le même que le paramètre Type2de modèle.Type1 et Type2 chaque besoin fournissent uniquement un constructeur par défaut, un constructeur à argument unique, et un destructeur.Tous les membres du type pair sont publics, car le type est déclaré comme struct plutôt que comme class.Les deux utilisations les plus courantes d'une paire sont comme types de retour des fonctions qui retournent deux valeurs et comme éléments pour les classes de conteneur associatives classe de mappage et classe de mappage multiple qui ont une clé et un type valeur associés à chaque élément.Ce dernier répond aux besoins d'un conteneur associatif de paires et possède un type valeur du formulaire pair<constkey_type, mapped_type>.

Exemple

// 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;
   }
}
  
  
  
  
  
  

Configuration requise

en-tête : <utility>

l'espace de noms : DST

Voir aussi

Référence

Pair Logical Operator

Sécurité des threads dans la bibliothèque C++ standard