Namespaces
Variants

std::get(std::pair)

Aus de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Dienstprogramme
Relationale Operatoren (veraltet in C++20)
Ganzzahl-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabularstypen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Definiert in 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 pair unter Verwendung der tuple-ähnlichen Schnittstelle.

1-4) Die indexbasierten Überladungen lassen sich nicht kompilieren, wenn der Index I weder 0 noch 1 ist.
5-12) Die typbasierten Überladungen lassen sich nicht kompilieren, wenn die Typen T und U identisch sind.

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)