std::pair

From cppreference.com
< cpp‎ | utility
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
 
Defined in header <utility>
template<

    class T1,
    class T2

> struct pair;

std::pair is a class template that provides a way to store two heterogeneous objects as a single unit. A pair is a specific case of a std::tuple with two elements.

If neither T1 nor T2 is a possibly cv-qualified class type with non-trivial destructor, or array thereof, the destructor of pair is trivial.

Template parameters

T1, T2 - the types of the elements that the pair stores.

Member types

Member type Definition
first_type T1
second_type T2

Member objects

Member name Type
first T1
second T2

Member functions

constructs new pair
(public member function)
assigns the contents
(public member function)
(C++11)
swaps the contents
(public member function)

Non-member functions

creates a pair object of type, determined by the argument types
(function template)
(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20)
lexicographically compares the values in the pair
(function template)
specializes the std::swap algorithm
(function template)
accesses an element of a pair
(function template)

Helper classes

obtains the size of a pair
(class template specialization)
obtains the type of the elements of pair
(class template specialization)
determines the common reference type of two pairs
(class template specialization)
determines the common type of two pairs
(class template specialization)
formatting support for pair
(class template specialization)

Helper specializations

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>;
(since C++23)

This specialization of std::enable_nonlocking_formatter_optimization enables efficient implementation of std::print and std::println for printing a pair object when both T and U enable it.

Deduction guides(since C++17)

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 2796 C++98 triviality of the destructor of pair was unspecified specified

See also

(C++11)
implements fixed size container, which holds elements of possibly different types
(class template)
(C++11)
creates a tuple of lvalue references or unpacks a tuple into individual objects
(function template)