C++ 标准库头文件汇集:
概念库
<concepts>(C++20) 基础库概念
协程库
<coroutine>(C++20) 协程支持库
工具库
<cstdlib> 通用工具:程序控制、动态内存分配、随机数、排序与搜索
<csignal> 信号管理的函数与宏常量
<csetjmp> 保存(及跳转)到执行环境的宏(与函数)
<cstdarg> 变长实参列表的处理
<typeinfo> 运行时类型信息工具
<typeindex>(C++11) std::type_index
<type_traits>(C++11) 编译时类型信息
<bitset> std::bitset 类模板
<functional> 函数对象、函数调用、绑定操作及引用包装
<utility> 多种工具组件
<ctime> C 风格日期/时间工具
<chrono>(C++11) C++ 时间工具
<cstddef> 标准宏与 typedef
<initializer_list>(C++11) std::initializer_list 类模板
<tuple>(C++11) std::tuple 类模板
<any>(C++17) std::any 类
<optional>(C++17) std::optional 类模板
<variant>(C++17) std::variant 类模板
<compare>(C++20) 三路比较运算符支持
<version>(C++20) 提供依赖实现的库信息
<source_location>(C++20) 提供获得源码位置的手段
动态内存管理
<new> 低层内存管理工具
<memory> 高层内存管理工具
<scoped_allocator>(C++11) 嵌套分配器类
<memory_resource>(C++17) 多态分配器与内存资源
数值极限
<climits> 整数类型的极限
<cfloat> 浮点类型的极限
<cstdint>(C++11) 定宽整数类型与其他类型的极限
<cinttypes>(C++11) 格式化宏、 intmax_t 与 uintmax_t 数学与转换
<limits> 查询算术类型属性的一致方式
错误处理
<exception> 异常处理工具
<stdexcept> 标准异常对象
<cassert> 比较其实参与零的条件编译宏
<system_error>(C++11) 定义 std::error_code ,依赖平台的错误码
<cerrno> 含有最后一次错误号的宏
字符串库
<cctype> 确定窄字符类别的函数
<cwctype> 确定宽字符的类别的函数
<cstring> 多种窄字符串处理函数
<cwchar> 多种宽与多字节字符串处理函数
<cuchar>(C++11) C 风格 Unicode 字符转换函数
<string> std::basic_string 类模板
<string_view>(C++17) std::basic_string_view 类模板
<charconv>(C++17) std::to_chars 与 std::from_chars
<format>(C++20) 格式化库,包括 std::format
容器库
<array>(C++11) std::array 容器
<vector> std::vector 容器
<deque> std::deque 容器
<list> std::list 容器
<forward_list>(C++11) std::forward_list 容器
<set> std::set 与 std::multiset 关联容器
<map> std::map 与 std::multimap 关联容器
<unordered_set>(C++11) std::unordered_set 与 std::unordered_multiset 无序关联容器
<unordered_map>(C++11) std::unordered_map 与 std::unordered_multimap 无序关联容器
<stack> std::stack 容器适配器
<queue> std::queue 与 std::priority_queue 容器适配器
<span>(C++20) std::span 视图
迭代器库
<iterator> 范围迭代器
范围库
<ranges>(C++20) 范围访问、元件、要求、工具及适配器
算法库
<algorithm> 在范围上操作的算法
<execution>(C++17) 并行版本算法的预定义执行策略
数值库
<cmath> 常用数学函数
<complex> 复数类型
<valarray> 表示和操纵值的数组的类
<random>(C++11) 随机数生成器与分布
<numeric> 范围中的值上的数值运算
<ratio>(C++11) 编译时有理数算术
<cfenv>(C++11) 浮点环境访问函数
<bit>(C++20) 位操纵函数
<numbers>(C++20) 数学常数
本地化库
<locale> 本地化工具
<clocale> C 本地化工具
<codecvt>(C++11)(C++17 中弃用) Unicode 转换设施
输入/输出库
<iosfwd> 输入/输出库中所有类的前置声明
<ios> std::ios_base 类、 std::basic_ios 类模板与数个 typedef
<istream> std::basic_istream 类模板与数个 typedef
<ostream> std::basic_ostream 、 std::basic_iostream 类模板与数个 typedef
<iostream> 数个标准流对象
<fstream> std::basic_fstream 、 std::basic_ifstream 、 std::basic_ofstream 类模板及数个 typedef
<sstream> std::basic_stringstream 、 std::basic_istringstream 、 std::basic_ostringstream 类模板与数个 typedef
<syncstream>(C++20) std::basic_osyncstream 、 std::basic_syncbuf 及 typedef
<strstream>(C++98 中弃用) std::strstream 、 std::istrstream 、 std::ostrstream
<iomanip> 格式化输入与输出的辅助函数
<streambuf> std::basic_streambuf 类模板
<cstdio> C 风格输入输出函数
文件系统库
<filesystem>(C++17) std::path 类与支持函数
正则表达式库
<regex>(C++11) 支持正则表达式处理的类、算法及迭代器
原子操作库
<atomic>(C++11) 原子操作库
线程支持库
<thread>(C++11) std::thread 类与支持函数
<stop_token>(C++20) std::jthread 的停止记号
<mutex>(C++11) 互斥元件
<shared_mutex>(C++14) 共享互斥元件
<future>(C++11) 异步计算元件
<condition_variable>(C++11) 线程等待条件
<semaphore>(C++20) 信号量
<latch>(C++20) 闩
<barrier>(C++20) 屏障
C 兼容头文件
对于一些形式为 xxx.h 的 C 标准库头文件,C++ 标准库同时包含同名的头文件和拥有形式 cxxx 的头文件(所有有意义的 cxxx 头文件列于上方)。
除了 complex.h 这一例外,C++ 标准库中包含的每个 xxx.h 头文件都将其对应的 cxxx 中本应置于 std 命名空间中的每个名字放在全局命名空间中。
允许这些头文件也在 std 命名空间中声明同样的名字,而且允许对应的 cxxx 头文件也在全局命名空间中声明同样的名字:包含 <cstdlib> 肯定会提供 std::malloc,亦可提供 ::malloc。包含 <stdlib.h> 肯定会提供 ::malloc,亦可提供 std::malloc。这甚至适用于并非 C 标准库一部分的函数和函数重载。
<assert.h>(弃用) 表现同 <cassert>
<ctype.h>(弃用) 表现如同将每个来自 <cctype> 的名字置于全局命名空间
<errno.h>(弃用) 表现同 <cerrno>
<fenv.h>(C++11)(弃用) 表现如同将每个来自 <cfenv> 的名字置于全局命名空间
<float.h>(弃用) 表现同 <cfloat>
<inttypes.h>(C++11)(弃用) 表现如同将每个来自 <cinttypes> 的名字置于全局命名空间
<limits.h>(弃用) 表现同 <climits>
<locale.h>(弃用) 表现如同将每个来自 <clocale> 的名字置于全局命名空间
<math.h>(弃用) 表现如同将每个来自 <cmath> 的名字置于全局命名空间,除了数学特殊函数的名字
<setjmp.h>(弃用) 表现如同将每个来自 <csetjmp> 的名字置于全局命名空间
<signal.h>(弃用) 表现如同将每个来自 <csignal> 的名字置于全局命名空间
<stdarg.h>(弃用) 表现如同将每个来自 <cstdarg> 的名字置于全局命名空间
<stddef.h>(弃用) 表现如同将每个来自 <cstddef> 的名字置于全局命名空间,除了 std::byte 与相关函数的名字
<stdint.h>(C++11)(弃用) 表现如同将每个来自 <cstdint> 的名字置于全局命名空间
<stdio.h>(弃用) 表现如同将每个来自 <cstdio> 的名字置于全局命名空间
<stdlib.h>(弃用) 表现如同将每个来自 <cstdlib> 的名字置于全局命名空间
<string.h>(弃用) 表现如同将每个来自 <cstring> 的名字置于全局命名空间
<time.h>(弃用) 表现如同将每个来自 <ctime> 的名字置于全局命名空间
<uchar.h>(C++11)(弃用) 表现如同将每个来自 <cuchar> 的名字置于全局命名空间
<wchar.h>(弃用) 表现如同将每个来自 <cwchar> 的名字置于全局命名空间
<wctype.h>(弃用) 表现如同将每个来自 <cwctype> 的名字置于全局命名空间
特殊 C 兼容头文件
头文件 <stdatomic.h> 声明在亦在 C 标准库中提供的名称,并定义在 C 中为关键词的 _Atomic 宏。不同于其他 xxx.h 头文件,不提供对应的 <cstdatomic> 。
<stdatomic.h>(C++23) 定义 _Atomic 并提供 C 标准库中的对应组件
空 C 头文件
头文件 <complex.h>、<ccomplex>、<tgmath.h> 及 <ctgmath> 不含有任何来自 C 标准库的内容,而且不过是包含其他来自 C++ 标准库的头文件。C++ 中这些头文件的使用均已被弃用。
<ccomplex>(C++11)(C++17 中弃用)(C++20 中移除) 简单地包含头文件 <complex>
<complex.h>(C++11)(弃用) 简单地包含头文件 <complex>
<ctgmath>(C++11)(C++17 中弃用)(C++20 中移除) 简单地包含头文件 <complex> 与 <cmath> :等价于 C 头文件 tgmath.h 的重载已于前述头文件提供
<tgmath.h>(C++11)(弃用) 简单地包含头文件 <complex> 与 <cmath>
无意义的 C 头文件
头文件 <ciso646>、<cstdalign> 及 <cstdbool> 在 C++ 中无意义,因为它们在 C 中提供的宏是 C++ 的关键词。
<ciso646>(C++20 中移除) 空头文件。 C 中 iso646.h 中出现的宏是 C++ 中的关键词
<iso646.h>(弃用) 无效果
<cstdalign>(C++11)(C++17 中弃用)(C++20 中移除) 定义一个兼容性宏常量
<stdalign.h>(C++11)(弃用) 定义一个兼容性宏常量
<cstdbool>(C++11)(C++17 中弃用)(C++20 中移除) 定义一个兼容性宏常量
<stdbool.h>(C++11)(弃用) 定义一个兼容性宏常量
不受支持的 C 头文件
C++ 不包含 C 头文件 <stdatomic.h>、 (C++23 前)<stdnoreturn.h> 及 <threads.h> 而且它们无 cxxx 等价版本。
实验性库
C++ TR/TS 亦定义数个头文件的汇集。