实用程序库
C++ 包含各种实用程序库,提供从 位计数 到 部分函数应用 的功能。这些库可以大致分为两组
- 语言支持库,以及
- 通用库。
内容 |
[编辑] 语言支持
语言支持库提供与语言功能紧密交互并支持常见语言习惯用法类和函数。
[编辑] 类型支持
基本类型 (例如 std::size_t、std::nullptr_t)、RTTI (例如 std::type_info)
[编辑] 元编程
类型特征 (例如 std::is_integral、std::rank)、编译时常量 (例如 std::integer_sequence、std::ratio)
[编辑] 常量评估上下文
在头文件
<type_traits> 中定义 | |
(C++20) |
检测调用是否发生在常量评估的上下文中 (函数) |
(C++26) |
检查指针在编译时是否在对象的生存期内 (函数) |
[编辑] 实现属性
头文件 <version> 提供有关 C++ 标准库的实现相关信息 (例如版本号和发布日期)。它还定义了 库功能测试宏。 |
(自 C++20 起) |
[编辑] 程序实用程序
终止 (例如 std::abort、std::atexit)、环境 (例如 std::system)、信号 (例如 std::raise)
[编辑] 动态内存管理
智能指针 (例如 std::shared_ptr)、分配器 (例如 std::allocator 或 std::pmr::memory_resource)、C 样式内存管理 (例如 std::malloc)
[编辑] 错误处理
异常 (例如 std::exception、std::terminate)、断言 (例如 assert)
[编辑] 源代码信息捕获
在头文件
<source_location> 中定义 | |
(C++20) |
一个表示源代码信息的类,例如文件名、行号和函数名 (类) |
[编辑] 调试支持
在头文件
<debugging> 中定义 | |
(C++26) |
调用时暂停正在运行的程序 (函数) |
(C++26) |
如果 std::is_debugger_present 返回 true,则调用 std::breakpoint (函数) |
(C++26) |
检查程序是否在调试器的控制下运行 (函数) |
[编辑] 初始化列表
定义在头文件
<initializer_list> 中 | |
(C++11) |
引用在 列表初始化 中创建的临时数组 (类模板) |
[编辑] 三元比较
定义在头文件
<compare> 中 | |
指定运算符 <=> 对给定类型产生一致的结果 (概念) | |
(C++20) |
三元比较的结果类型,支持所有 6 个运算符,不可替换,并允许不可比较的值 (类) |
(C++20) |
三元比较的结果类型,支持所有 6 个运算符,不可替换 (类) |
(C++20) |
三元比较的结果类型,支持所有 6 个运算符,可替换 (类) |
命名比较函数 (函数) | |
(C++20) |
实现 x <=> y 的约束函数对象 (类) |
(C++20) |
获取给定类型的三元比较运算符 <=> 的结果类型 (类模板) |
(C++20) |
所有给定类型可以转换为的最强比较类别 (类模板) |
(C++20) |
执行三元比较并产生 std::strong_ordering 类型的结果(定制点对象) |
(C++20) |
执行三元比较并产生 std::weak_ordering 类型的结果(定制点对象) |
(C++20) |
执行三元比较并产生 std::partial_ordering 类型的结果(定制点对象) |
执行三元比较并产生 std::strong_ordering 类型的结果,即使 operator<=> 不可用(定制点对象) | |
(C++20) |
执行三元比较并产生 std::weak_ordering 类型的结果,即使 operator<=> 不可用(定制点对象) |
执行三元比较并产生 std::partial_ordering 类型的结果,即使 operator<=> 不可用(定制点对象) |
[编辑] 协程支持
用于协程支持的类型,例如 std::coroutine_traits,std::coroutine_handle。 |
(自 C++20 起) |
[编辑] 可变参数函数
对接受任意数量参数的函数的支持(通过例如 va_start,va_arg,va_end)。
[编辑] 通用实用程序
[编辑] 交换
定义在头文件
<utility> 中 | |
交换两个对象的的值 (函数模板) | |
(C++14) |
用新值替换参数并返回其先前值 (函数模板) |
定义在头文件
<concepts> 中 | |
(C++20) |
交换两个对象的的值 (定制点对象) |
[编辑] 类型操作
定义在头文件
<utility> 中 | |
(C++11) |
转发函数参数并使用类型模板参数来保留其值类别 (函数模板) |
(C++23) |
转发函数参数,就好像将其转换为指定类型模板参数的表达式的值类别和 constness 一样 (函数模板) |
(C++11) |
将参数转换为 xvalue (函数模板) |
(C++11) |
如果移动构造函数不抛出异常,则将参数转换为 xvalue (函数模板) |
(C++17) |
获取对 const 的引用的参数 (函数模板) |
(C++11) |
获取对模板类型参数对象的引用,以便在非计算上下文中使用 (函数模板) |
(C++23) |
将枚举转换为其底层类型 (函数模板) |
[编辑] 整数比较函数
定义在头文件
<utility> 中 | |
比较两个整数值,确保带符号的负数小于无符号数 (函数模板) | |
(C++20) |
检查整数值是否在给定整数类型的范围内 (函数模板) |
[编辑] 关系运算符
定义在头文件
<utility> 中 | |
定义在命名空间
std::rel_ops 中 | |
(在 C++20 中已弃用) |
根据用户定义的 operator== 和 operator< 自动生成比较运算符 (函数模板) |
[编辑] 构造标签
定义在头文件
<utility> 中 | |
分段构造标签 (标签) | |
就地构造标签 (标签) | |
(C++26) |
值构造标签 (标签) |
[编辑] 对 和 元组
定义在头文件
<utility> 中 | |
实现二元元组,即一对值 (类模板) | |
定义于头文件
<tuple> 中 | |
(C++11) |
实现固定大小的容器,它包含可能不同类型的元素 (类模板) |
(C++17) |
使用元组参数调用函数 (函数模板) |
(C++17) |
使用元组参数构造对象 (函数模板) |
元组协议 | |
定义于头文件
<tuple> 中 | |
定义在头文件
<utility> 中 | |
定义于头文件
<array> 中 | |
定义于头文件
<ranges> 中 | |
定义于头文件
<complex> 中 | |
(C++11) |
获取元组类型元素数量 (类模板) |
(C++11) |
获取元组类型元素类型 (类模板) |
[编辑] 总和类型和类型擦除包装器
定义于头文件
<optional> 中 | |
(C++17) |
一个可能包含或不包含对象的包装器 (类模板) |
定义于头文件
<expected> 中 | |
(C++23) |
一个包含期望值或错误值的包装器 (类模板) |
定义于头文件
<variant> 中 | |
(C++17) |
一个类型安全的辨别联合体 (类模板) |
定义于头文件
<any> 中 | |
(C++17) |
包含任何 可复制构造 类型的对象 (类) |
[编辑] 位集
定义于头文件
<bitset> 中 | |
实现常量长度位数组 (类模板) |
[编辑] 函数对象
部分函数应用(例如 std::bind)和相关实用程序:用于绑定的实用程序,例如 std::ref 和 std::placeholders,多态函数包装器:std::function,预定义的仿函数(例如 std::plus,std::equal_to),成员指针到函数转换器 std::mem_fn。
[编辑] 哈希支持
定义于头文件
<functional> 中 | |
(C++11) |
哈希函数对象 (类模板) |
[编辑] 日期和时间
时间跟踪(例如 std::chrono::time_point,std::chrono::duration),C 风格日期和时间(例如 std::time,std::clock)
[编辑] 基本字符串转换
除了 C++ I/O 库提供的复杂的依赖于区域设置的解析器和格式化程序外,C I/O 库,C++ 字符串转换器,和 C 字符串转换器,头文件 <charconv> 为算术类型提供轻量级、与区域设置无关、不分配、不抛出的解析器和格式化程序。
定义于头文件
<charconv> 中 | |
(C++17) |
将整数或浮点数转换为字符序列 (函数) |
(C++17) |
std::to_chars 的返回值类型 (类) |
(C++17) |
将字符序列转换为整数或浮点数 (函数) |
(C++17) |
std::from_chars 的返回值类型 (类) |
(C++17) |
为 std::to_chars 和 std::from_chars 指定格式 (枚举) |
[编辑] 格式化库
类型安全的字符串格式化设施。
定义于头文件
<format> 中 | |
(C++20) |
将参数的格式化表示存储在新的字符串中 (函数模板) |
(C++20) |
通过输出迭代器写出其参数的格式化表示 (函数模板) |
(C++20) |
通过输出迭代器写出其参数的格式化表示,不超过指定大小 (函数模板) |
(C++20) |
确定存储其参数的格式化表示所需的字符数 (函数模板) |
(C++20) |
使用类型擦除参数表示的 std::format 的非模板变体 (函数) |
(C++20) |
使用类型擦除参数表示的 std::format_to 的非模板变体 (函数模板) |
(C++20) |
为给定类型定义格式化规则 (类模板) |
(C++20) |
在格式化错误时抛出的异常类型 (类) |
[编辑] 另请参阅
C 文档 for 实用程序库
|