pair-Struktur
Eine Struktur, die bereitstellt, mit denen die Fähigkeit zwei Objekte als einzelnes Objekt behandelt.
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
);
};
Parameter
_Val1
Wert, der das erste Element aus pair initialisiert._Val2
Wert, der das zweite Element von pair initialisiert._Right
Ein Paar, dessen Werte verwendet werden sollen, die Elemente einer anderen als Paar zu initialisieren.
Rückgabewert
Der erste (Standard) Konstruktor initialisiert erstes Element der Paare dem Standardwert des Typs Type1 und des zweiten Elements dem Standardwert des Typs Type2.
Der zweite Konstruktor initialisiert erstes Element der Paare von _Val1 und Sekunden zu _Val2.
Der dritte (Vorlagen) Konstruktor initialisiert erstes Element der Paare von _Right.erstens und Sekunde in _Right.zweitens.
Der vierte Konstruktor initialisiert erstes Element der Paare von _Val1 und Sekunden zu _Val2 mit Rvalue-Verweisdeklarator: &&.
Hinweise
Die Vorlagenstruktur speichert ein Paar Objekte des Typs Type1 und Type2, bzw. Der Typ first_type ist identisch, den der Vorlagenparameter Type1 und der Typ second_type identisch der Vorlagenparameter Type2 ist. Type1 und Type2 geben nur jede Anforderung einen Standardkonstruktor, einem EinzelArgumentkonstruktor und einem Destruktor an. Alle Member des Typs pair sind öffentlich, da der Typ als struct und nicht als Klasse deklariert wird. Die beiden häufigste Verwendung für ein Paar bildet als Rückgabetypen für Funktionen, die zwei Werte zurückgeben und während Elemente für den assoziativen Container Zuordnung Klasse und Multimap Klasse-Klassen, die einen Schlüssel und einen Werttyp haben, die jedem Element zugeordnet werden. Der zweite Vorgang wird den Anforderungen für einen Paarassoziativen container erfüllen und über einen Werttyp Formular pair<const key_type, mapped_type>.
Beispiel
// 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;
}
}
Anforderungen
Header: Hilfsprogramm <>
Namespace: std