C++ Standard Library headers
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 容器 | |
| std::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++ 标准库既包含同名头文件,也包含另一个形如
c
xxx
的头文件(所有有意义的
c
xxx
头文件均已在上方列出)。形如
xxx
.h
的头文件仅用于实现互操作性。C++ 源文件可能需要包含这些头文件之一才能成为有效的 ISO C 代码。不打算同时作为有效 ISO C 代码的源文件不应使用任何 C 头文件。
除
complex.h
外,C++ 标准库中包含的每个
xxx
.h
头文件都会将对应
c
xxx
头文件本应置于
std
命名空间中的每个名称置于全局命名空间。
这些头文件被允许同时在
std
命名空间中声明相同的名称,对应的
c
xxx
头文件也被允许在全局命名空间中声明相同的名称:包含
<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>
、
<stdbit.h>
和
<stdckdint.h>
声明了在C标准库中也提供的名称。头文件
<stdatomic.h>
还定义了
_Atomic
宏,该宏是C语言中的
关键字
。与其他
<
xxx
.h>
头文件不同,并未提供对应的
<cstdatomic>
、
<cstdbit>
和
<cstdckdint>
版本。
|
(C++23)
|
定义
_Atomic
并提供 C 标准库中的对应组件
|
|
(C++26)
|
提供 C 标准库中的对应组件 |
|
(C++26)
|
提供 C 标准库中的对应组件 |
空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 中移除)
|
定义
兼容性宏常量
__alignas_is_defined
和
__alignof_is_defined
|
|
(C++11)
(C++17 中弃用)
(C++20 中移除)
|
定义
兼容性宏常量
__bool_true_false_are_defined
|
| 无实际作用 | |
|
(C++11)
|
定义
兼容性宏常量
__alignas_is_defined
和
__alignof_is_defined
|
|
(C++11)
|
定义
兼容性宏常量
__bool_true_false_are_defined
|
不受支持的C标准库头文件
C语言头文件
<stdatomic.h>
,
(until C++23)
<stdnoreturn.h>
和
<threads.h>
未被包含在C++中,且没有对应的
c
xxx
等效头文件。
实验性库
C++ 技术规范/技术报告 也定义了几组头文件集合。
另请参阅
|
C 文档
关于
标准库头文件
|