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] |