Namensräume
Varianten
Aktionen

std::get(std::pair)

Von cppreference.com
< cpp‎ | utility‎ | pair
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-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 Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
 
Definiert in der Header-Datei <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 mithilfe der tuple-ähnlichen Schnittstelle.

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

Inhalt

[bearbeiten] Parameter

p - Paar, dessen Inhalt extrahiert werden soll

[bearbeiten] Rückgabewert

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

[bearbeiten] 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)

[bearbeiten] Defect reports

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2485 C++11 (nach Index)
C++14 (nach Typ)
Es gibt keine Überladungen für const pair&& Die Überladungen werden hinzugefügt

[bearbeiten] Siehe auch

Strukturierte Bindung (C++17) bindet die angegebenen Namen an Unterobjekte oder Tuple-Elemente des Initialisierers[bearbeiten]
greift auf ein Tupel-Element gemäß Spezifikation zu
(function template) [bearbeiten]
greift auf ein Element eines arrays zu
(Funktionstemplate) [bearbeiten]
liest den Wert des variants anhand des Index oder des Typs (wenn der Typ eindeutig ist), wirft bei Fehler
(function template) [bearbeiten]
erhält Iterator oder Sentinel von einem std::ranges::subrange
(Funktionsvorlage) [bearbeiten]
erhält eine Referenz auf den realen oder imaginären Teil von std::complex
(function template) [edit]