utility_pair

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::printstd::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