std::pair
来自cppreference.com
在标头 <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 的大小 (类模板特化) |
获得 pair 中元素的类型 (类模板特化) | |
确定两个 pair 的公共引用类型 (类模板特化) | |
(C++23) | 确定两个 pair 的公共类型 (类模板特化) |
(C++23) | pair 的格式化支持 (类模板特化) |
[编辑]辅助特化
template<class T, class U > constexprbool 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,或将元组解包为独立对象 (函数模板) |