std::pair

来自cppreference.com
< cpp‎ | utility
 
 
工具库
语言支持
类型支持(基本类型、RTTI)
库功能特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
pair
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)

 
 
在标头 <utility> 定义
template<

    class T1,
    class T2

> struct pair;

std::pair 是类模板,提供将两个异质对象作为一个单元存储的途径。pair 是 std::tuple 的拥有两个元素的特殊情况。

T1T2 都不是可能有 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 针对 TU 都已启用的 pair 对象的打印启用 std::printstd::println 的高效实现。

推导指引(C++17 起)

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 2796 C++98 pair 的析构函数的平凡性未指明 已指明

参阅

(C++11)
实现固定大小的容器,它保有类型可以相异的元素
(类模板)
(C++11)
创建左值引用的 tuple,或将元组解包为独立对象
(函数模板)