std::pair
| 定义于头文件 <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
中的值
(函数模板) |
|
(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
均启用该优化时,能够高效实现
std::print
和
std::println
对
pair
对象的输出。
推导指南 (C++17 起)
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 应用于 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| LWG 2796 | C++98 |
pair
的析构函数的平凡性未作规定
|
已规定 |
参见
|
(C++11)
|
实现固定大小容器,可容纳可能不同类型的元素
(类模板) |
|
(C++11)
|
创建左值引用的
tuple
或将 tuple 解包为独立对象
(函数模板) |