Namespaces
Variants

C++ Standard Library headers

From cppreference.net
Standard library headers

C++标准库的接口由以下头文件集合定义。

目录

多用途头文件

通用工具集: 程序控制 动态内存分配 随机数生成 排序与搜索
用于并行版本算法的预定义执行策略 及执行控制组件 (C++26起)

语言支持库

浮点类型限制
整型类型的限制
(C++20)
三路比较运算符 支持
合约支持库
协程支持库
保存(并跳转至)执行上下文的宏(及函数)
用于信号管理功能的函数与宏常量
可变长度参数列表的处理
标准宏与类型定义
(C++11)
固定宽度整数类型 其他类型的限制
异常处理工具集
std::initializer_list 类模板
查询算术类型的属性
底层内存管理工具
提供获取 源代码位置 的方法
(C++23)
固定宽度浮点类型
std::type_index
运行时类型信息工具
(C++20)
提供用于验证库实现状态的宏

概念库

(C++20)
基础库概念

诊断库

有条件编译的宏,将其参数与零进行比较
包含最近错误编号的宏
调试库
堆栈追踪
标准异常类型
定义 std::error_code ,一个平台相关的错误代码

内存管理库

高级内存管理工具
多态分配器与内存资源
嵌套分配器类

元编程库

(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 容器适配器
std::forward_list 容器
(C++26)
std::hive 容器
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 容器适配器
std::unordered_map std::unordered_multimap 无序关联容器
std::unordered_set std::unordered_multiset 无序关联容器
std::vector 容器

迭代器库

范围迭代器

范围库

std::generator 类模板
(C++20)
范围访问、原语、要求、工具与适配器

算法库

操作范围区间的算法
对值域进行数值运算

字符串库

多种 窄字符字符串处理函数
std::basic_string 类模板
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++11)
浮点环境 访问函数
常用数学函数
复数类型
(C++26)
基础线性代数算法 (BLAS)
(C++20)
数学常量
(C++11)
随机数生成器与分布器
(C++26)
数据并行类型及针对这些类型的操作
用于表示和操作数值数组的类

时间库

(C++11)
C++ 时间工具库
C风格时间/日期工具

输入/输出库

格式化宏 intmax_t uintmax_t 的数学运算及转换
C风格输入输出函数
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
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
std::basic_osyncstream std::basic_syncbuf 及其类型别名

并发支持库

(C++11)
原子操作库
(C++20)
屏障
线程等待条件
(C++11)
异步计算原语
危险指针
(C++20)
闩锁
(C++11)
互斥原语
(C++26)
读-拷贝-更新机制
信号量
共享互斥原语
用于 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> 完全相同
行为如同将 <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> 版本。

定义 _Atomic 并提供 C 标准库中的对应组件
(C++26)
提供 C 标准库中的对应组件
提供 C 标准库中的对应组件

空C头文件

头文件 <complex.h> <ccomplex> <tgmath.h> 以及 <ctgmath> 并不包含任何来自C标准库的内容,而仅包含C++标准库中的其他头文件。

(C++11) (C++17 中弃用) (C++20 中移除)
仅包含头文件 <complex>
仅包含头文件 <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
无实际作用
定义 兼容性宏常量 __alignas_is_defined __alignof_is_defined
定义 兼容性宏常量 __bool_true_false_are_defined

不受支持的C标准库头文件

C语言头文件 <stdatomic.h> , (until C++23) <stdnoreturn.h> <threads.h> 未被包含在C++中,且没有对应的 c xxx 等效头文件。

实验性库

C++ 技术规范/技术报告 也定义了几组头文件集合。

另请参阅

C 文档 关于 标准库头文件