std::get(std::pair)
Von cppreference.com
| 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& |
(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& |
(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&& |
(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&& |
(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
Führen Sie diesen Code aus
#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 |
| (C++11) |
greift auf ein Tupel-Element gemäß Spezifikation zu (function template) |
| (C++11) |
greift auf ein Element eines arrays zu(Funktionstemplate) |
| (C++17) |
liest den Wert des variants anhand des Index oder des Typs (wenn der Typ eindeutig ist), wirft bei Fehler (function template) |
| (C++20) |
erhält Iterator oder Sentinel von einem std::ranges::subrange (Funktionsvorlage) |
| (C++26) |
erhält eine Referenz auf den realen oder imaginären Teil von std::complex (function template) |