Namespaces
Variants

std::pair

С сайта ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы проверки возможностей библиотеки (C++20)
Программные утилиты
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
 
Определён в заголовочном файле <utility>
template<
    class T1,
    class T2
> struct pair;

std::pair — это шаблон класса, который предоставляет способ хранения двух разнородных объектов как единого целого. Пара является частным случаем std::tuple с двумя элементами.

Если ни T1 , ни T2 не являются, возможно, cv-квалифицированным типом класса с нетривиальным деструктором, или массивом такого типа, то деструктор pair тривиален.

Параметры шаблона

T1, T2 - типы элементов, которые хранит пара.

Типы членов

Тип члена Определение
first_type T1
second_type T2

Объекты-члены

Название члена Тип
first T1
second T2

Функции-члены

создает новый pair
(public member function)
присваивает содержимое
(public member function)
(C++11)
обменивает содержимое
(public member function)

Функции, не являющиеся членами класса

создает объект pair типа, определяемого типами аргументов
(шаблон функции)
(удалено в C++20) (удалено в C++20) (удалено в C++20) (удалено в C++20) (удалено в C++20) (C++20)
лексикографически сравнивает значения в pair
(шаблон функции)
специализирует алгоритм std::swap
(шаблон функции)
получает доступ к элементу pair
(шаблон функции)

Вспомогательные классы

получает размер pair
(специализация шаблона класса)
получает тип элементов pair
(специализация шаблона класса)
определяет общий ссылочный тип двух pair s
(специализация шаблона класса)
определяет общий тип двух pair s
(специализация шаблона класса)
поддержка форматирования для 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 > ;
(начиная с C++23)

Эта специализация std::enable_nonlocking_formatter_optimization позволяет эффективную реализацию std::print и std::println для вывода объекта pair когда и T и U поддерживают эту оптимизацию.

Руководства по выводу (начиная с C++17)

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2796 C++98 тривиальность деструктора pair не была указана указана

Смотрите также

(C++11)
реализует контейнер фиксированного размера, который содержит элементы, возможно, разных типов
(шаблон класса)
(C++11)
создает tuple из lvalue-ссылок или распаковывает tuple в отдельные объекты
(шаблон функции)