pair_make_pair
pair_make_pair (make_pair 함수)
이 페이지는 std::make_pair 함수에 대해 설명해요. 이 함수는 두 개의 인자를 받아 std::pair 객체를 생성하며, 인자의 타입으로부터 쌍의 타입을 자동으로 추론해요. C++11부터 이동 의미론을 지원하고, C++14부터 constexpr로 사용할 수 있어요.
출처: cppreference
본문
함수 시그니처
| 정의: |
||
|---|---|---|
template < class T1 , class T2 > std :: pair < T1 , T2 > make_pair ( T1 x , T2 y ); |
(until C++11) | |
template < class T1 , class T2 > std :: pair < /*V1*/ , /*V2*/ > make_pair ( T1 && x , T2 && y ); |
(since C++11) (until C++20) (constexpr since C++14) | |
template < class T1 , class T2 > constexpr std :: pair < std :: unwrap_ref_decay_t < T1 > , std :: unwrap_ref_decay_t < T2 >> make_pair ( T1 && x , T2 && y ); |
(since C++20) |
std::pair 객체를 생성하며, 인자의 타입으로부터 대상 타입을 추론해요.
C++11부터 C++20까지는 다음과 같이 타입을 결정해요. std::decay<T1>::type을 U1, std::decay<T2>::type을 U2라고 할 때, /*V1*/과 /*V2*/는 다음과 같이 정의돼요. U1이 std::reference_wrapper<X>라면 /*V1*/은 X&이고, 그렇지 않으면 /*V1*/은 U1이에요. U2가 std::reference_wrapper<Y>라면 /*V2*/는 Y&이고, 그렇지 않으면 /*V2*/는 U2예요.
매개변수
| x, y | - | 쌍을 구성할 값들이에요. |
|---|
반환값
std :: pair < T1 , T2 > ( x , y ) |
(until C++11) |
|---|---|
std :: pair < /*V1*/ , /*V2*/ > ( std :: forward < T1 > ( x ), std :: forward < T2 > ( y )) |
(since C++11) (until C++20) |
std :: pair < std :: unwrap_ref_decay_t < T1 > , std :: unwrap_ref_decay_t < T2 >> ( std :: forward < T1 > ( x ), std :: forward < T2 > ( y )) |
(since C++20) |
예제
#include <functional>
#include <iostream>
#include <utility>
int main()
{
int n = 1;
int a[5] = {1, 2, 3, 4, 5};
// build a pair from two ints
auto p1 = std::make_pair(n, a[1]);
std::cout << "The value of p1 is "
<< '(' << p1.first << ", " << p1.second << ")\n";
// build a pair from a reference to int and an array (decayed to pointer)
auto p2 = std::make_pair(std::ref(n), a);
n = 7;
std::cout << "The value of p2 is "
<< '(' << p2.first << ", " << *(p2.second + 2) << ")\n";
}
출력:
The value of p1 is (1, 2)
The value of p2 is (7, 3)
결함 보고서
다음의 동작을 변경하는 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.
| DR | 적용 대상 | 발표된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 181 | C++98 | 매개변수 타입이 const-reference 타입이라 배열을 전달할 수 없었어요. | 매개변수 타입을 값 타입으로 변경했어요. |