Namespaces
Variants

std::get(std::pair)

cppreference.net에서
 
 
유틸리티 라이브러리
일반 유틸리티
관계 연산자 (C++20에서 폐지됨)
정수 비교 함수
(C++20)(C++20)(C++20)    
(C++20)
교환 및 타입 연산
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
공통 어휘 타입
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
헤더 <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부터)

튜플 유사 인터페이스를 사용하여 쌍에서 요소를 추출합니다.

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)