std::get(std::pair)
Aus de.cppreference.net
| 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
Diesen Code ausführen
#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 |
|
(C++11)
|
greift auf spezifisches Tupel-Element zu
(Funktions-Template) |
|
(C++11)
|
greift auf ein Element eines
array
zu
(Funktions-Template) |
|
(C++17)
|
liest den Wert der Variante für gegebenen Index oder Typ (falls Typ eindeutig), wirft Exception bei Fehler
(Funktions-Template) |
|
(C++20)
|
erhält Iterator oder Sentinel aus einem
std::ranges::subrange
(Funktions-Template) |
|
(C++26)
|
erhält eine Referenz auf Real- oder Imaginärteil eines
std::complex
(Funktions-Template) |