C++ 标准库头文件
C++ 标准库的接口由以下头文件集合定义。
多用途头文件 | ||
通用目的工具: 程序控制, 动态内存分配, 随机数, 排序和搜索 | ||
(C++17) |
算法并行版本的预定义执行策略 和执行控制组件(自 C++26 起) | |
语言支持库 | ||
浮点类型的限制 | ||
整型类型的限制 | ||
(C++20) |
三路比较运算符 支持 | |
(C++26) |
契约支持库 | |
(C++20) |
协程支持库 | |
保存(和跳转到)执行上下文的宏(和函数) | ||
用于信号管理的函数和宏常量 | ||
处理可变长度参数列表 | ||
标准宏和类型定义 | ||
(C++11) |
固定宽度整数类型 和 其他类型的限制 | |
异常处理工具 | ||
(C++11) |
std::initializer_list 类模板 | |
查询算术类型的属性 | ||
底层内存管理工具 | ||
(C++20) |
提供获取 源代码位置 的方法 | |
(C++23) |
固定宽度浮点类型 | |
(C++11) |
std::type_index | |
运行时类型信息工具 | ||
(C++20) |
提供用于验证库实现状态的宏 | |
概念库 | ||
(C++20) |
基本库概念 | |
诊断库 | ||
有条件编译的宏,用于将其参数与零进行比较 | ||
包含最后错误编号的宏 | ||
(C++26) |
调试库 | |
(C++23) |
堆栈跟踪 库 | |
标准异常类型 | ||
(C++11) |
定义 std::error_code,一个平台相关的错误代码 | |
内存管理库 | ||
高级内存管理工具 | ||
(C++17) |
多态分配器和内存资源 | |
(C++11) |
嵌套分配器类 | |
元编程库 | ||
(C++11) |
编译时有理算术 | |
(C++11) |
编译时类型信息工具 | |
通用工具库 | ||
(C++17) |
std::any 类 | |
(C++20) |
位操作 函数 | |
std::bitset 类模板 | ||
(C++23) |
std::expected 类模板 | |
函数对象、函数调用、绑定操作和引用包装器 | ||
(C++17) |
std::optional 类模板 | |
(C++11) |
std::tuple 类模板 | |
各种 实用工具组件 | ||
(C++17) |
std::variant 类模板 | |
容器库 | ||
(C++11) |
std::array 容器 | |
<deque> | ||
(C++23) |
std::flat_map 和 std::flat_multimap 容器适配器 | |
(C++23) |
std::flat_set 和 std::flat_multiset 容器适配器 | |
(C++11) |
std::forward_list 容器 | |
(C++26) |
std::hive 容器 | |
(C++26) |
std::inplace_vector 容器 | |
std::list 容器 | ||
std::map 和 std::multimap 关联容器 | ||
(C++23) |
std::mdspan 视图 | |
std::queue 和 std::priority_queue 容器适配器 | ||
std::set 和 std::multiset 关联容器 | ||
(C++20) |
std::span 视图 | |
std::stack 容器适配器 | ||
(C++11) |
std::unordered_map 和 std::unordered_multimap 无序关联容器 | |
(C++11) |
std::unordered_set 和 std::unordered_multiset 无序关联容器 | |
std::vector 容器 | ||
迭代器库 | ||
范围迭代器 | ||
范围库 | ||
(C++23) |
std::generator 类模板 | |
(C++20) |
范围访问、原语、要求、工具和适配器 | |
算法库 | ||
对范围进行操作的算法 | ||
对范围内值进行数值运算 | ||
字符串库 | ||
各种 窄字符字符串处理函数 | ||
std::basic_string 类模板 | ||
(C++17) |
std::basic_string_view 类模板 | |
文本处理库 | ||
用于确定窄字符类别的函数 | ||
(C++17) |
std::to_chars 和 std::from_chars | |
C 本地化工具 | ||
(C++11)(在 C++17 中弃用)(在 C++26 中移除) |
Unicode 转换设施 | |
(C++11) |
C 风格的 Unicode 字符转换函数 | |
各种 宽 和 多字节 字符串处理函数 | ||
用于确定宽字符类别的函数 | ||
(C++20) |
格式化库,包括 std::format | |
本地化工具 | ||
(C++11) |
用于支持正则表达式处理的类、算法和迭代器 | |
(C++26) |
文本编码标识 | |
数值库 | ||
(C++11) |
浮点环境 访问函数 | |
常用数学函数 | ||
复数类型 | ||
(C++26) |
基本线性代数算法 (BLAS) | |
(C++20) |
数学常数 | |
(C++11) |
随机数生成器和分布 | |
(C++26) |
数据并行类型和对这些类型的操作 | |
用于表示和操作值数组的类 | ||
时间库 | ||
(C++11) |
C++ 时间工具 | |
C 风格的时间/日期工具 | ||
输入/输出库 | ||
(C++11) |
格式化宏, intmax_t 和 uintmax_t 数学和转换 | |
C 风格的输入输出函数 | ||
(C++17) |
std::filesystem::path 类和 支持函数 | |
std::basic_fstream, std::basic_ifstream, std::basic_ofstream 类模板和类型别名 | ||
用于控制输入和输出格式的辅助函数 | ||
std::ios_base 类, std::basic_ios 类模板和类型别名 | ||
输入/输出库中所有类的前向声明 | ||
几个标准流对象 | ||
std::basic_istream 类模板和类型别名 | ||
std::basic_ostream, std::basic_iostream 类模板和类型别名 | ||
(C++23) |
格式化输出库,包括 std::print | |
(C++23) |
std::basic_spanstream, std::basic_ispanstream, std::basic_ospanstream 类模板和类型别名 | |
std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream 类模板和类型别名 | ||
std::basic_streambuf 类模板 | ||
(在 C++98 中弃用)(在 C++26 中移除) |
std::strstream, std::istrstream, std::ostrstream | |
(C++20) |
std::basic_osyncstream, std::basic_syncbuf 和类型别名 | |
并发支持库 | ||
(C++11) |
原子操作库 | |
(C++20) |
屏障 | |
(C++11) |
线程等待条件 | |
(C++11) |
异步计算原语 | |
(C++26) |
危害指针 | |
(C++20) |
闩锁 | |
(C++11) |
互斥原语 | |
(C++26) |
读取-复制更新机制 | |
(C++20) |
信号量 | |
(C++14) |
共享互斥原语 | |
(C++20) |
用于 std::jthread 的停止令牌 | |
(C++11) |
std::thread 类和 支持函数 |
[[编辑]] C 兼容性标头
对于某些 xxx.h
形式的 C 标准库标头,C++ 标准库既包含同名标头,也包含另一种 cxxx
形式的标头(上面列出了所有有意义的 cxxx
标头)。 xxx.h
形式的标头的预期用途仅用于互操作性。 C++ 源文件可能需要包含其中一个标头才能成为有效的 ISO C。不打算也成为有效 ISO C 的源文件不应使用任何 C 标头。
除了 complex.h
之外,C++ 标准库中包含的每个 xxx.h
标头都将相应的 cxxx
标头会放置在 std 命名空间中的每个名称放置在全局命名空间中。
这些标头也允许在 std 命名空间中声明相同的名称,并且相应的 cxxx
标头也允许在全局命名空间中声明相同的名称:包括 <cstdlib> 肯定提供 std::malloc,也可能提供 ::malloc。 包括 <stdlib.h> 肯定提供 ::malloc,也可能提供 std::malloc。 这甚至适用于不属于 C 标准库的函数和函数重载。
注意:xxx.h
标头在 C++98 中已弃用,在 C++23 中已取消弃用。 纯 C++ 代码不鼓励使用这些标头,但不会在未来移除。
行为与 <cassert> 相同 | |
行为如同来自 <cctype> 的每个名称都放置在全局命名空间中一样 | |
行为与 <cerrno> 相同 | |
(C++11) |
行为如同来自 <cfenv> 的每个名称都放置在全局命名空间中一样 |
行为与 <cfloat> 相同 | |
(C++11) |
行为如同来自 <cinttypes> 的每个名称都放置在全局命名空间中一样 |
行为与 <climits> 相同 | |
行为如同来自 <clocale> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <cmath> 的每个名称都放置在全局命名空间中一样, 除了 数学特殊函数 的名称之外 | |
行为如同来自 <csetjmp> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <csignal> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <cstdarg> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <cstddef> 的每个名称都放置在全局命名空间中一样, 除了 std::byte 和相关函数 的名称之外 | |
(C++11) |
行为如同来自 <cstdint> 的每个名称都放置在全局命名空间中一样 |
行为如同来自 <cstdio> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <cstdlib> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <cstring> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <ctime> 的每个名称都放置在全局命名空间中一样 | |
(C++11) |
行为如同来自 <cuchar> 的每个名称都放置在全局命名空间中一样 |
行为如同来自 <cwchar> 的每个名称都放置在全局命名空间中一样 | |
行为如同来自 <cwctype> 的每个名称都放置在全局命名空间中一样 |
[[编辑]] 特殊 C 兼容性标头
标头 <stdatomic.h> 声明了 C 标准库中也提供的名称,并定义了 _Atomic
宏,它是 C 中的 关键字。 与其他 xxx.h
标头不同,不提供相应的 <cstdatomic>
。
(C++23) |
定义了 _Atomic 并在 C 标准库中提供了相应的组件 |
本节不完整 原因:添加 C++26 的 <stdbit.h> 和 <stdckdint.h> 以及 C29 的 <stdmchar.h>。 |
[[编辑]] 空 C 标头
标头 <complex.h>、<ccomplex>、<tgmath.h> 和 <ctgmath> 不包含 C 标准库中的任何内容,而是仅包含 C++ 标准库中的其他标头。
(C++11)(在 C++17 中弃用)(在 C++20 中移除) |
仅包含标头 <complex> |
(C++11) |
仅包含标头 <complex> |
(C++11)(在 C++17 中弃用)(在 C++20 中移除) |
仅包含标头 <complex> 和 <cmath>:C 标头 <tgmath.h> 内容的等效重载已由这些标头提供 |
(C++11) |
仅包含标头 <complex> 和 <cmath> |
[[编辑]] 无意义的 C 标头
标头 <ciso646>、<cstdalign> 和 <cstdbool> 在 C++ 中没有意义,因为它们在 C 中提供的宏是 C++ 中的语言关键字。
(在 C++20 中移除) |
空标头。 C 中的 iso646.h 中出现的宏 是 C++ 中的关键字 |
(C++11)(在 C++17 中弃用)(在 C++20 中移除) |
定义了一个 兼容性宏常量 |
(C++11)(在 C++17 中弃用)(在 C++20 中移除) |
定义了一个 兼容性宏常量 |
不起作用 | |
(C++11) |
定义了一个 兼容性宏常量 |
(C++11) |
定义了一个 兼容性宏常量 |
[[编辑]] 不受支持的 C 标头
C 标头 <stdatomic.h>,(直到 C++23) <stdnoreturn.h> 和 <threads.h> 未包含在 C++ 中,也没有 cxxx
等效项。
[[编辑]] 实验性库
C++ TR/TS 也定义了几个标头集合。
[[编辑]] 另请参阅
C 文档,用于 C 标准库标头
|