X Tutup
The Wayback Machine - https://web.archive.org/web/20240907101955/https://zh.cppreference.com/w/cpp/utility

工具库

来自cppreference.com
< cpp


 
 
工具库
语言支持
类型支持(基本类型、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)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)

 

C++ 包含了各种工具库,提供了诸如位计数部分函数应用的功能。这些库大致可以分为两类:

  • 语言支持库
  • 通用库

目录

[编辑] 语言支持

语言支持库中所提供的类和函数与语言特性紧密相关,用以支持语言中的一些常见的惯用法。

[编辑] 类型支持

基本类型(如 std::size_tstd::nullptr_t)、RTTI(如 std::type_info)。

[编辑] 元编程

类型特征(如 std::is_integralstd::rank),编译时常量(如 std::integer_sequencestd::ratio)。

[编辑] 常量求值语境

在标头 <type_traits> 定义
检测调用是否在常量求值的语境内发生
(函数) [编辑]
在编译时检查指定对象是否在它的生存期内
(函数) [编辑]

[编辑] 实现属性

标头 <version> 提供关于 C++ 标准库的实现依赖信息(例如版本号和发行日期)。它也定义了特性测试宏

(C++20 起)

[编辑] 程序工具

终止(如 std::abortstd::atexit),环境(如 std::system),信号(如 std::raise)。

[编辑] 动态内存管理

智能指针(如 std::shared_ptr),分配器(如 std::allocatorstd::pmr::memory_resource),C 风格内存管理(如 std::malloc)。

[编辑] 错误处理

异常(如 std::exceptionstd::terminate),断言(如 assert)。

[编辑] 源码信息捕获

在标头 <source_location> 定义
表示关于源代码的信息(例如文件名、行号以及函数名)的类
(类) [编辑]

[编辑] 调试支持

在标头 <debugging> 定义
当调用时暂停运行中的程序
(函数) [编辑]
如果 std::is_debugger_present 返回 true 则调用 std::breakpoint
(函数) [编辑]
检查程序是否在调试器的控制下运行
(函数) [编辑]

[编辑] 初始化式列表

在标头 <initializer_list> 定义
列表初始化中创建临时数组然后引用它
(类模板) [编辑]

[编辑] 三路比较

在标头 <compare> 定义
指定运算符 <=> 在给定类型上产生一致的结果
(概念) [编辑]
三路比较的结果类型,支持所有 6 种运算符,不可替换,并允许不可比较的值
(类) [编辑]
三路比较的结果类型,支持所有 6 种运算符且不可替换
(类) [编辑]
三路比较的结果类型,支持所有 6 种运算符且可替换
(类) [编辑]
具名比较函数
(函数) [编辑]
实现 x <=> y 的受约束函数对象
(类) [编辑]
获得三路比较运算符 <=> 在给定类型上的结果
(类模板) [编辑]
给定的全部类型都能转换到的最强比较类别
(类模板) [编辑]
进行三路比较并产生 std::strong_ordering 类型的结果
(定制点对象) [编辑]
进行三路比较并产生 std::weak_ordering 类型的结果
(定制点对象) [编辑]
进行三路比较并产生 std::partial_ordering 类型的结果
(定制点对象) [编辑]
进行三路比较并产生 std::strong_ordering 类型的结果,即使 operator<=> 不可用
(定制点对象) [编辑]
进行三路比较并产生 std::weak_ordering 类型的结果,即使 operator<=> 不可用
(定制点对象) [编辑]
进行三路比较并产生 std::partial_ordering 类型的结果,即使 operator<=> 不可用
(定制点对象) [编辑]

[编辑] 协程支持

用于协程支持的类型,例如 std::coroutine_traitsstd::coroutine_handle

(C++20 起)

[编辑] 变参数函数

支持接受任意数量参数的函数(例如通过 va_startva_argva_end)。

[编辑] 通用工具

[编辑] 交换

在标头 <utility> 定义
交换两个对象的值
(函数模板) [编辑]
(C++14)
将实参替换为一个新值,并返回它先前的值
(函数模板) [编辑]
在标头 <concepts> 定义
交换两个对象的值
(定制点对象) [编辑]

[编辑] 类型操作

在标头 <utility> 定义
(C++11)
转发一个函数实参
(函数模板) [编辑]
转发函数参数,如同将它转型为指定的类型模板实参的表达式的值类别与 const 性
(函数模板) [编辑]
(C++11)
获得右值引用
(函数模板) [编辑]
若移动构造函数不抛出则获得右值引用
(函数模板) [编辑]
(C++17)
获得到其实参的 const 引用
(函数模板) [编辑]
(C++11)
获取到其实参的引用,用于不求值语境中
(函数模板) [编辑]
转换枚举为其底层类型
(函数模板) [编辑]

[编辑] 整数比较函数

在标头 <utility> 定义
比较两个整数值,而无转换所致的值更改
(函数模板) [编辑]
(C++20)
检查整数值是否在给定整数类型的范围内
(函数模板) [编辑]

[编辑] 关系运算符

在标头 <utility> 定义
在命名空间 std::rel_ops 定义
基于用户定义的 operator==operator< 自动生成比较运算符
(函数模板) [编辑]

[编辑] 构造标签

在标头 <utility> 定义
逐段构造标签
(标签) [编辑]
原位构造标签
(类模板) [编辑]
值构造标签
(标签) [编辑]

[编辑] 对偶元组

在标头 <utility> 定义
实现二元组,即一对值
(类模板) [编辑]
逐段构造标签
(标签) [编辑]
实现编译时整数数列
(类模板) [编辑]
在标头 <tuple> 定义
(C++11)
实现固定大小的容器,它保有类型可以相异的元素
(类模板) [编辑]
(C++17)
以一个实参的元组来调用函数
(函数模板) [编辑]
以一个实参元组构造对象
(函数模板) [编辑]
元组协议
在标头 <tuple> 定义
在标头 <utility> 定义
在标头 <array> 定义
在标头 <ranges> 定义
获得元组式类型的元素数
(类模板) [编辑]
获得元组式类型的元素类型
(类模板) [编辑]

[编辑] 和类型与类型擦除包装器

在标头 <optional> 定义
(C++17)
可能或可能不保有一个对象的包装器
(类模板) [编辑]
 
在标头 <expected> 定义
(C++23)
含有一个预期值或错误值的包装器
(类模板) [编辑]
 
在标头 <variant> 定义
(C++17)
类型安全的可辨识联合体
(类模板) [编辑]
 
在标头 <any> 定义
(C++17)
可保有任何可复制构造 (CopyConstructible) 类型的实例的对象。
(类) [编辑]
 
在标头 <utility> 定义
原位构造标签
(类模板) [编辑]

[编辑] 位集合

在标头 <bitset> 定义
实现常量长度的位数组
(类模板) [编辑]

[编辑] 函数对象

部分函数应用(如 std::bind)及相关工具:用于绑定的工具,如 std::refstd::placeholders、多态函数包装器:std::function、预定义函数对象(如 std::plusstd::equal_to)、成员指针到函数转换器 std::mem_fn

[编辑] 散列支持

在标头 <functional> 定义
(C++11)
散列函数对象
(类模板) [编辑]

[编辑] 日期和时间

时间跟踪(如 std::chrono::time_pointstd::chrono::duration),C 风格的日期和时间(如 std::timestd::clock)。

[编辑] 初等字符串转换

除了 C++ 输入/输出库、C 输入/输出 库、C++ 字符串转换函数C 字符串转换函数提供的复杂的本地环境依赖的分析器和格式化器外,标头 <charconv> 提供对于算术类型的轻量、不依赖本地环境、不分配、不抛出的分析器和格式化器。

在标头 <charconv> 定义
(C++17)
转换整数或浮点值为字符序列
(函数) [编辑]
std::to_chars 的返回类型
(类) [编辑]
转换字符序列到整数或浮点值
(函数) [编辑]
std::from_chars 的返回类型
(类) [编辑]
指定 std::to_charsstd::from_chars 所用的格式
(枚举) [编辑]

[编辑] 格式化库

类型安全的格式化设施。

在标头 <format> 定义
(C++20)
在新字符串中存储参数的格式化表示
(函数模板) [编辑]
(C++20)
通过输出迭代器写入其实参的格式化表示
(函数模板) [编辑]
通过输出迭代器写入其实参的格式化表示,不超出指定的大小
(函数模板) [编辑]
确定存储其参数的格式化表示所需的字符数
(函数模板) [编辑]
(C++20)
std::format 的使用类型擦除的参数表示的非模板变体
(函数) [编辑]
std::format_to 的使用类型擦除的参数表示的非模板变体
(函数模板) [编辑]
(C++20)
定义针对给定类型的格式化规则
(类模板) [编辑]
格式化错误时抛出的异常类型
(类) [编辑]

[编辑] 参阅

工具库C 文档
X Tutup