Namespaces
Variants

std:: pair

From cppreference.net
Utilities library
定义于头文件 <utility>
template <

class T1,
class T2

> struct pair ;

std::pair 是一个类模板,提供将两个异构对象存储为单一单元的方法。pair 是包含两个元素的 std::tuple 的特例。

如果 T1 T2 均非可能带有 cv 限定符且具有非平凡析构函数的类类型或其数组,则 pair 的析构函数是平凡的。

目录

模板参数

T1, T2 - pair 所存储元素的类型。

成员类型

成员类型 定义
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 中的值
(函数模板)
特化 std::swap 算法
(函数模板)
访问 pair 的元素
(函数模板)

辅助类

获取 pair 的大小
(类模板特化)
获取 pair 元素的类型
(类模板特化)
确定两个 pair 的公共引用类型
(类模板特化)
确定两个 pair 的公共类型
(类模板特化)
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 的特化使得当 T U 均启用该优化时,能够高效实现 std::print std::println pair 对象的输出。

推导指南 (C++17 起)

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 应用于 发布时的行为 正确行为
LWG 2796 C++98 pair 的析构函数的平凡性未作规定 已规定

参见

(C++11)
实现固定大小容器,可容纳可能不同类型的元素
(类模板)
(C++11)
创建左值引用的 tuple 或将 tuple 解包为独立对象
(函数模板)