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