Namespaces
Variants

std:: get (std::pair)

From cppreference.net
Utilities library
(Anmerkung: Der bereitgestellte HTML-Code enthält keinen übersetzbaren Text, da alle Tags und Attribute gemäß den Anweisungen unverändert bleiben sollen und die Tabellenzellen leer sind.)
Definiert im Header <utility>
template < std:: size_t I, class T1, class T2 >

typename std:: tuple_element < I, std:: pair < T1,T2 > > :: type &

get ( std:: pair < T1, T2 > & p ) noexcept ;
(1) (seit C++11)
(constexpr seit C++14)
template < std:: size_t I, class T1, class T2 >

const typename std:: tuple_element < I, std:: pair < T1,T2 > > :: type &

get ( const std:: pair < T1,T2 > & p ) noexcept ;
(2) (seit C++11)
(constexpr seit C++14)
template < std:: size_t I, class T1, class T2 >

typename std:: tuple_element < I, std:: pair < T1,T2 > > :: type &&

get ( std:: pair < T1,T2 > && p ) noexcept ;
(3) (seit C++11)
(constexpr seit C++14)
template < std:: size_t I, class T1, class T2 >

const typename std:: tuple_element < I, std:: pair < T1,T2 > > :: type &&

get ( const std:: pair < T1,T2 > && p ) noexcept ;
(4) (seit C++11)
(constexpr seit C++14)
template < class T, class U >
constexpr T & get ( std:: pair < T, U > & p ) noexcept ;
(5) (seit C++14)
template < class T, class U >
constexpr const T & get ( const std:: pair < T, U > & p ) noexcept ;
(6) (seit C++14)
template < class T, class U >
constexpr T && get ( std:: pair < T, U > && p ) noexcept ;
(7) (seit C++14)
template < class T, class U >
constexpr const T && get ( const std:: pair < T, U > && p ) noexcept ;
(8) (seit C++14)
template < class T, class U >
constexpr T & get ( std:: pair < U, T > & p ) noexcept ;
(9) (seit C++14)
template < class T, class U >
constexpr const T & get ( const std:: pair < U, T > & p ) noexcept ;
(10) (seit C++14)
template < class T, class U >
constexpr T && get ( std:: pair < U, T > && p ) noexcept ;
(11) (seit C++14)
template < class T, class U >
constexpr const T && get ( const std:: pair < U, T > && p ) noexcept ;
(12) (seit C++14)

Extrahiert ein Element aus dem Paar unter Verwendung der tuple-like Schnittstelle.

1-4) Die indexbasierten Überladungen schlagen fehl bei der Kompilierung, wenn der Index I weder 0 noch 1 ist.
5-12) Die typbasierten Überladungen schlagen fehl bei der Kompilierung, wenn die Typen T und U identisch sind.

Inhaltsverzeichnis

Parameter

p - Paar, dessen Inhalt extrahiert werden soll

Rückgabewert

1-4) Gibt eine Referenz auf p. first zurück, falls I == 0 , und eine Referenz auf p. second , falls I == 1 .
5-8) Gibt eine Referenz auf p. first zurück.
9-12) Gibt eine Referenz auf p. second zurück.

Beispiel

#include <iostream>
#include <utility>
int main()
{
    auto p = std::make_pair(1, 3.14);
    std::cout << '(' << std::get<0>(p) << ", " << std::get<1>(p) << ")\n";
    std::cout << '(' << std::get<int>(p) << ", " << std::get<double>(p) << ")\n";
}

Ausgabe:

(1, 3.14)
(1, 3.14)

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Veröffentlichtes Verhalten Korrektes Verhalten
LWG 2485 C++11 (nach Index)
C++14 (nach Typ)
es gibt keine Überladungen für const pair&& die Überladungen wurden hinzugefügt

Siehe auch

Structured binding (C++17) bindet die angegebenen Namen an Teilobjekte oder Tupel-Elemente des Initialisierers
greift auf spezifisches Tupel-Element zu
(Funktions-Template)
greift auf ein Element eines array zu
(Funktions-Template)
liest den Wert der Variante für gegebenen Index oder Typ (falls Typ eindeutig), wirft Exception bei Fehler
(Funktions-Template)
erhält Iterator oder Sentinel aus einem std::ranges::subrange
(Funktions-Template)
erhält eine Referenz auf Real- oder Imaginärteil eines std::complex
(Funktions-Template)