Namespaces
Variants

std::get(std::pair)

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
 
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 usando la interfaz similar a 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 tipo fallan al compilar si los tipos T y U son iguales.

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)