Aracılığıyla paylaş


pair Structure

İki nesneyi tek bir nesne olarak işleyebilme özelliği sağlayan bir yapı.

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

Parametreler

  • _Val1
    İlk öğesinden başlatma değeri pair.

  • _Val2
    İkinci öğesi başlatma değeri pair.

  • _Right
    Öğeleri başka bir çiftinin başlatmak için kullanılacak değerleri olan bir çift.

Dönüş Değeri

İlk öğe türü için varsayılan değer çiftinin ilk (varsayýlan) kurucu başlatır Type1 ve ikinci öğe türünün varsayılan Type2.

İkinci yapıcı çiftinin ilk öğe başlatır _Val1 ve ikinci için _Val2.

Üçüncü (şablon) yapıcı çiftinin ilk öğe başlatır _Right. ilk ve ikinci için _Right.second.

Dördüncü yapıcı çiftinin ilk öğe başlatır _Val1 ve ikinci için _Val2 kullanarak Rvalue başvuru Bildiricisi: & &.

Notlar

Nesne türü çifti şablon yapı saklar Type1 ve Type2, sırasıyla. Tür first_type şablon parametresi ile aynı Type1 ve second_type şablon parametresi ile aynı Type2. Type1 ve Type2 her yalnızca bir varsayılan kurucu, tek bağımsız değişken yapıcı ve yıkıcı bir sağlamanız. Türündeki tüm üyeler pair türü olarak bildirildiði için ortak olan bir struct yerine farklı bir sınıfı. Olarak dönüş türleri için iki değer döndüren işlevler ve ilişkilendirilebilir kapsayıcı sınıfları için öğeler olarak çifti iki en yaygın kullanımları olan sınıf eşleme ve multimap sınıf bir anahtar ve her öğeyle ilişkilendirilmiş bir değer türü vardır. İkincisi çifti ilişkilendirilebilir kapsayıcısı için gereksinimlerini karşılar ve formun değer türünde pair<constkey_type, mapped_type>.

Örnek

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

Gereksinimler

Başlık: <utility>

Namespace: std

Ayrıca bkz.

Başvuru

Pair Logical Operator

Standart C++ Kitaplığı'nda iş parçacığı güvenliği