Namespaces
Variants

std:: get (std::pair)

From cppreference.net
Utilities library
Défini dans l'en-tête <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) (depuis C++11)
(constexpr depuis 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) (depuis C++11)
(constexpr depuis 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) (depuis C++11)
(constexpr depuis 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) (depuis C++11)
(constexpr depuis C++14)
template < class T, class U >
constexpr T & get ( std:: pair < T, U > & p ) noexcept ;
(5) (depuis C++14)
template < class T, class U >
constexpr const T & get ( const std:: pair < T, U > & p ) noexcept ;
(6) (depuis C++14)
template < class T, class U >
constexpr T && get ( std:: pair < T, U > && p ) noexcept ;
(7) (depuis C++14)
template < class T, class U >
constexpr const T && get ( const std:: pair < T, U > && p ) noexcept ;
(8) (depuis C++14)
template < class T, class U >
constexpr T & get ( std:: pair < U, T > & p ) noexcept ;
(9) (depuis C++14)
template < class T, class U >
constexpr const T & get ( const std:: pair < U, T > & p ) noexcept ;
(10) (depuis C++14)
template < class T, class U >
constexpr T && get ( std:: pair < U, T > && p ) noexcept ;
(11) (depuis C++14)
template < class T, class U >
constexpr const T && get ( const std:: pair < U, T > && p ) noexcept ;
(12) (depuis C++14)

Extrait un élément de la paire en utilisant l'interface tuple-like .

1-4) Les surcharges basées sur l'index échouent à la compilation si l'index I n'est ni 0 ni 1 .
5-12) Les surcharges basées sur le type échouent à compiler si les types T et U sont identiques.

Table des matières

Paramètres

p - paire dont le contenu doit être extrait

Valeur de retour

1-4) Retourne une référence à p. first si I == 0 et une référence à p. second si I == 1 .
5-8) Retourne une référence à p. first .
9-12) Retourne une référence à p. second .

Exemple

#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";
}

Sortie :

(1, 3.14)
(1, 3.14)

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement correct
LWG 2485 C++11 (par index)
C++14 (par type)
il n'y a pas de surcharges pour const pair&& les surcharges sont ajoutées

Voir aussi

Structured binding (C++17) lie les noms spécifiés aux sous-objets ou éléments de tuple de l'initialiseur
accède à l'élément spécifié du tuple
(modèle de fonction)
accède à un élément d'un array
(modèle de fonction)
lit la valeur du variant donné l'index ou le type (si le type est unique), lance une exception en cas d'erreur
(modèle de fonction)
obtient un itérateur ou un sentinelle d'un std::ranges::subrange
(modèle de fonction)
obtient une référence à la partie réelle ou imaginaire d'un std::complex
(modèle de fonction)