Namespaces
Variants

std::get(std::pair)

De fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (obsolète en C++20)
 
 
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 de type tuple.

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

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)