pair_get

pair_get (pair의 요소 추출)

std::get 함수 템플릿은 std::pair에서 튜플과 같은 인터페이스로 요소를 추출해요. 인덱스 또는 타입을 사용하여 pair의 첫 번째나 두 번째 요소에 접근할 수 있어요. C++11부터 사용 가능하며, C++14에서 constexpr 및 타입 기반 오버로드가 추가되었어요.

출처: cppreference

본문

std::pair는 두 개의 이질적인 값을 보관하는 컨테이너예요. std::get을 사용하면 컴파일 타임에 인덱스나 타입으로 원하는 요소를 참조할 수 있어요.

오버로드 (Overloads)

헤더에 정의됨
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) (since C++11) (constexpr since 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) (since C++11) (constexpr since 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) (since C++11) (constexpr since 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) (since C++11) (constexpr since C++14)
template < class T , class U > constexpr T & get ( std :: pair < T , U >& p ) noexcept ; (5) (since C++14)
template < class T , class U > constexpr const T & get ( const std :: pair < T , U >& p ) noexcept ; (6) (since C++14)
template < class T , class U > constexpr T && get ( std :: pair < T , U >&& p ) noexcept ; (7) (since C++14)
template < class T , class U > constexpr const T && get ( const std :: pair < T , U >&& p ) noexcept ; (8) (since C++14)
template < class T , class U > constexpr T & get ( std :: pair < U , T >& p ) noexcept ; (9) (since C++14)
template < class T , class U > constexpr const T & get ( const std :: pair < U , T >& p ) noexcept ; (10) (since C++14)
template < class T , class U > constexpr T && get ( std :: pair < U , T >&& p ) noexcept ; (11) (since C++14)
template < class T , class U > constexpr const T && get ( const std :: pair < U , T >&& p ) noexcept ; (12) (since C++14)

Parameters

| p | - | 내용을 추출할 pair |

반환값

지정된 요소에 대한 참조를 반환해요.

Example

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

Output:

(1, 3.14)
(1, 3.14)

결함 보고 (Defect reports)

다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.

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

같이 보기 (See also)

구조적 바인딩 (C++17) 지정된 이름을 초기화자의 하위 객체 또는 튜플 요소에 바인딩해요 [edit]
get (std::tuple) (C++11) tuple에서 지정된 요소에 접근해요 (함수 템플릿) [edit]
get (std::array) (C++11) 배열의 요소에 접근해요 (함수 템플릿) [edit]
get (std::variant) (C++17) 인덱스 또는 타입(타입이 유일한 경우)으로 variant의 값을 읽어요. 오류 시 예외를 던져요 (함수 템플릿) [edit]
get (std::ranges::subrange) (C++20) std::ranges::subrange에서 반복자 또는 센티널을 얻어요 (함수 템플릿) [edit]
get (std::complex) (C++26) std::complex에서 실수부 또는 허수부에 대한 참조를 얻어요 (함수 템플릿) [edit]

더 알아보기 (Learn more)

cppreference