utility_pair (std::pair)
std::pair는 서로 다른 타입의 두 객체를 하나의 단위로 묶어 저장할 수 있게 해주는 클래스 템플릿이에요. 두 요소를 가진 std::tuple의 특수한 경우로 볼 수 있답니다. 이 페이지에서는 std::pair의 템플릿 매개변수, 멤버 타입, 멤버 함수, 비멤버 함수 등을 자세히 살펴볼게요.
출처: cppreference
본문
개요
<utility> 헤더에 정의되어 있어요.
template < class T1 , class T2 > struct pair ;
std::pair는 서로 다른 타입의 두 객체(T1, T2)를 하나의 단위로 저장하는 클래스 템플릿이에요. std::tuple에서 요소가 두 개인 특수한 경우로 볼 수 있답니다.
T1과 T2가 모두 비자명 소멸자(non-trivial destructor)를 가진 cv-한정 클래스 타입이나 그 배열이 아니라면, pair의 소멸자는 자명(trivial)해요.
템플릿 매개변수
| T1, T2 |
- |
pair가 저장하는 요소의 타입이에요. |
멤버 타입
| 멤버 타입 |
정의 |
| first_type |
T1 |
| second_type |
T2 |
멤버 객체
| 멤버 이름 |
타입 |
| first |
T1 |
| second |
T2 |
멤버 함수
| (constructor) |
새로운 pair를 생성해요. (public 멤버 함수) |
| operator= |
내용을 할당해요. (public 멤버 함수) |
| swap (C++11) |
내용을 교환해요. (public 멤버 함수) |
비멤버 함수
| make_pair |
인자 타입에 따라 결정되는 타입의 pair 객체를 생성해요. (함수 템플릿) |
| operator== operator!= operator< operator<= operator> operator>= operator<=> (C++20에서 제거됨) (C++20에서 제거됨) (C++20에서 제거됨) (C++20에서 제거됨) (C++20에서 제거됨) (C++20) |
pair의 값을 사전식(lexicographically)으로 비교해요. (함수 템플릿) |
| std::swap (std::pair) (C++11) |
std::swap 알고리즘을 특수화해요. (함수 템플릿) |
| get (std::pair) (C++11) |
pair의 요소에 접근해요. (함수 템플릿) |
헬퍼 클래스
| std::tuple_size std::pair (C++11) |
pair의 크기를 구해요. (클래스 템플릿 특수화) |
| std::tuple_element std::pair (C++11) |
pair 요소의 타입을 구해요. (클래스 템플릿 특수화) |
| std::basic_common_reference std::pair (C++23) |
두 pair의 공통 참조 타입을 결정해요. (클래스 템플릿 특수화) |
| std::common_type std::pair (C++23) |
두 pair의 공통 타입을 결정해요. (클래스 템플릿 특수화) |
| std::formatter std::pair (C++23) |
pair에 대한 포맷팅 지원이에요. (클래스 템플릿 특수화) |
헬퍼 특수화
template < class T , class U > constexpr bool enable_nonlocking_formatter_optimization < std :: pair < T , U >> = enable_nonlocking_formatter_optimization < T > && enable_nonlocking_formatter_optimization < U > ;
이 std::enable_nonlocking_formatter_optimization 특수화는 T와 U가 모두 활성화되어 있을 때, pair 객체를 출력하는 std::print 및 std::println의 효율적인 구현을 가능하게 해요. (C++23부터)
추론 가이드 (C++17부터)
결함 보고서
다음의 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.
| DR |
적용 대상 |
공개된 동작 |
올바른 동작 |
| LWG 2796 |
C++98 |
pair 소멸자의 자명성(triviality)이 명시되지 않았음 |
명시됨 |
같이 보기
| tuple (C++11) |
서로 다른 타입의 요소를 보관하는 고정 크기 컨테이너를 구현해요. (클래스 템플릿) |
| tie (C++11) |
lvalue 참조의 tuple을 생성하거나 tuple을 개별 객체로 풀어줘요. (함수 템플릿) |
더 알아보기 (Learn more)
cppreference