Namespaces
Variants

std:: get (std::pair)

From cppreference.net
Utilities library
Definido en el encabezado <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) (desde C++11)
(constexpr desde 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) (desde C++11)
(constexpr desde 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) (desde C++11)
(constexpr desde 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) (desde C++11)
(constexpr desde C++14)
template < class T, class U >
constexpr T & get ( std:: pair < T, U > & p ) noexcept ;
(5) (desde C++14)
template < class T, class U >
constexpr const T & get ( const std:: pair < T, U > & p ) noexcept ;
(6) (desde C++14)
template < class T, class U >
constexpr T && get ( std:: pair < T, U > && p ) noexcept ;
(7) (desde C++14)
template < class T, class U >
constexpr const T && get ( const std:: pair < T, U > && p ) noexcept ;
(8) (desde C++14)
template < class T, class U >
constexpr T & get ( std:: pair < U, T > & p ) noexcept ;
(9) (desde C++14)
template < class T, class U >
constexpr const T & get ( const std:: pair < U, T > & p ) noexcept ;
(10) (desde C++14)
template < class T, class U >
constexpr T && get ( std:: pair < U, T > && p ) noexcept ;
(11) (desde C++14)
template < class T, class U >
constexpr const T && get ( const std:: pair < U, T > && p ) noexcept ;
(12) (desde C++14)

Extrae un elemento del par utilizando la interfaz tipo tuple .

1-4) Las sobrecargas basadas en índice fallan al compilar si el índice I no es ni 0 ni 1 .
5-12) Las sobrecargas basadas en tipos fallan al compilar si los tipos T y U son iguales.

Contenidos

Parámetros

p - par cuyo contenido extraer

Valor de retorno

1-4) Devuelve una referencia a p. first si I == 0 y una referencia a p. second si I == 1 .
5-8) Devuelve una referencia a p. first .
9-12) Devuelve una referencia a p. second .

Ejemplo

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

Salida:

(1, 3.14)
(1, 3.14)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2485 C++11 (por índice)
C++14 (por tipo)
no hay sobrecargas para const pair&& se añaden las sobrecargas

Véase también

Structured binding (C++17) vincula los nombres especificados a subobjetos o elementos de tupla del inicializador
accede al elemento especificado de la tupla
(function template)
accede a un elemento de un array
(function template)
lee el valor de la variant dado el índice o el tipo (si el tipo es único), lanza excepción en caso de error
(function template)
obtiene un iterador o centinela de un std::ranges::subrange
(function template)
obtiene una referencia a la parte real o imaginaria de un std::complex
(function template)