std::pair
Определено в заголовочном файле <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 (открытая функция-член) |
|
| присваивает содержимое (открытая функция-член) |
|
|
(C++11) | меняет содержимое местами (открытая функция-член) |
Функции, не являющиеся членами
создаёт объект pair типа, определяемого типами аргументов (шаблон функции) |
|
|
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20) | лексикографически сравнивает значения в pair (шаблон функции) |
|
(C++11) | специализирует алгоритм std::swap (шаблон функции) |
|
(C++11) | получает доступ к элементу pair (шаблон функции) |
Вспомогательные классы
|
(C++11) | получает размер pair (специализация шаблона класса) |
|
(C++11) | получает тип элементов pair (специализация шаблона класса) |
|
(C++23) | определяет общий ссылочный тип для двух pairs (специализация шаблона класса) |
|
(C++23) | определяет общий тип для двух pairs (специализация шаблона класса) |
|
(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>;
| (начиная с C++23) |
Эта специализация std::enable_nonlocking_formatter_optimization обеспечивает эффективную реализацию std::print и std::println для вывода объекта pair, если и T, и U поддерживают эту возможность.
Руководства по выводу типов(начиная с C++17)
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 2796 | C++98 | тривиальность деструктора pair не была определена | определена |
См. также
|
(C++11) | реализует контейнер фиксированного размера, содержащий элементы, типы которых могут различаться (шаблон класса) |
|
(C++11) | создаёт tuple из lvalue-ссылок или распаковывает кортеж в отдельные объекты (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/pair