Namespaces
Variants

std:: get (std::pair)

From cppreference.net
Utilities library
헤더 파일에 정의됨 <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) (C++11 이후)
(C++14 이후 constexpr)
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) (C++11부터)
(C++14부터 constexpr)
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) (C++11부터)
(C++14부터 constexpr)
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) (C++11부터)
(C++14부터 constexpr)
template < class T, class U >
constexpr T & get ( std:: pair < T, U > & p ) noexcept ;
(5) (C++14 이후)
template < class T, class U >
constexpr const T & get ( const std:: pair < T, U > & p ) noexcept ;
(6) (C++14 이후)
template < class T, class U >
constexpr T && get ( std:: pair < T, U > && p ) noexcept ;
(7) (C++14 이후)
template < class T, class U >
constexpr const T && get ( const std:: pair < T, U > && p ) noexcept ;
(8) (C++14 이후)
template < class T, class U >
constexpr T & get ( std:: pair < U, T > & p ) noexcept ;
(9) (C++14부터)
template < class T, class U >
constexpr const T & get ( const std:: pair < U, T > & p ) noexcept ;
(10) (C++14 이후)
template < class T, class U >
constexpr T && get ( std:: pair < U, T > && p ) noexcept ;
(11) (C++14 이후)
template < class T, class U >
constexpr const T && get ( const std:: pair < U, T > && p ) noexcept ;
(12) (C++14 이후)

tuple-like 인터페이스를 사용하여 페어에서 요소를 추출합니다.

1-4) 인덱스 기반 오버로드는 인덱스 I 0 도 아니고 1 도 아닌 경우 컴파일되지 않습니다.
5-12) 타입 기반 오버로드들은 T U 타입이 동일한 경우 컴파일에 실패합니다.

목차

매개변수

p - 내용을 추출할 pair

반환값

1-4) I == 0 인 경우 p. first 에 대한 참조를 반환하고, I == 1 인 경우 p. second 에 대한 참조를 반환합니다.
5-8) p. first 에 대한 참조를 반환합니다.
9-12) p. second 에 대한 참조를 반환합니다.

예제

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

출력:

(1, 3.14)
(1, 3.14)

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2485 C++11 (인덱스 기준)
C++14 (타입 기준)
const pair&&에 대한 오버로드가 없음 오버로드가 추가됨

참고 항목

Structured binding (C++17) 지정된 이름들을 초기화자의 부분 객체나 튜플 요소에 바인딩합니다
튜플의 지정된 요소에 접근합니다
(function template)
array 의 요소에 접근합니다
(function template)
인덱스나 타입(타입이 고유한 경우)으로 variant의 값을 읽고, 오류 시 예외를 발생시킵니다
(function template)
std::ranges::subrange 에서 반복자나 센티널을 얻습니다
(function template)
std::complex 에서 실수부나 허수부에 대한 참조를 얻습니다
(function template)