std::pair
| 
 在标头  
<utility> 定义 | 
||
| 
 template< 
    class T1,  | 
||
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 中的值(函数模板)  | 
| 
 (C++11) 
 | 
特化 std::swap 算法 (函数模板)  | 
| 
 (C++11) 
 | 
访问 pair 的一个元素(函数模板)  | 
辅助类
| 
 (C++11) 
 | 
获得 pair 的大小(类模板特化)  | 
| 
 (C++11) 
 | 
获得 pair 中元素的类型(类模板特化)  | 
确定两个 pair 的公共引用类型(类模板特化)  | 
|
| 
 (C++23) 
 | 
确定两个 pair 的公共类型(类模板特化)  | 
| 
 (C++23) 
 | 
pair 的格式化支持(类模板特化)  | 
辅助特化
| 
 template< class T, class U > 
constexpr bool enable_nonlocking_formatter_optimization<std::pair<T, U>>  | 
(C++23 起) | |
这个 std::enable_nonlocking_formatter_optimization 针对 T 和 U 都已启用的 pair 对象的打印启用 std::print 和 std::println 的高效实现。
推导指引(C++17 起)
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
| 缺陷报告 | 应用于 | 出版时的行为 | 正确行为 | 
|---|---|---|---|
| LWG 2796 | C++98 | pair 的析构函数的平凡性未指明 | 
已指明 | 
参阅
| 
 (C++11) 
 | 
实现固定大小的容器,它保有类型可以相异的元素 (类模板)  | 
| 
 (C++11) 
 | 
创建左值引用的 tuple,或将元组解包为独立对象 (函数模板)  |