命名空间
变体
操作

C++ 标准库头文件

来自 cppreference.com
< cpp
 
 
标准库头文件
语言支持
概念
<concepts> (C++20)
诊断
<system_error> (C++11)

内存管理
<memory_resource> (C++17)  
元编程
<type_traits> (C++11)
<ratio> (C++11)
通用实用程序
<utility>
<tuple> (C++11)
<optional> (C++17)
<variant> (C++17)
<any> (C++17)
<debugging> (C++26)
<expected> (C++23)
<bitset>
<charconv> (C++17)
<format> (C++20)
<bit> (C++20)

字符串
<cuchar> (C++11)

容器
<flat_set> (C++23)
<span> (C++20)
<mdspan> (C++23)
<inplace_vector> (C++26)
迭代器
<iterator>
范围
<ranges> (C++20)
<generator> (C++23)
算法
数值
<cfenv> (C++11)
<complex>
<cmath>
<linalg> (C++26)
<numbers> (C++20)

时间
<chrono> (C++11)
本地化
<codecvt> (C++11/17/26*)
<text_encoding> (C++26)
输入/输出
<filesystem> (C++17)
<cstdio>
<cinttypes> (C++11)
<strstream> (C++98/26*)
正则表达式
<regex> (C++11)
并发支持
<stop_token> (C++20)
<thread> (C++11)
<atomic> (C++11)
<rcu> (C++26)
<stdatomic.h> (C++23)
<mutex> (C++11)
<shared_mutex> (C++14)

<condition_variable> (C++11)  
<semaphore> (C++20)
<latch> (C++20)

<barrier> (C++20)
<future> (C++11)
<hazard_pointer> (C++26)

C 兼容性
<cstdbool> (C++11/17/20*)  
<ccomplex> (C++11/17/20*)
<ctgmath> (C++11/17/20*)

<cstdalign> (C++11/17/20*)

<ciso646> (直到 C++20)

 

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

内容

多用途头文件

通用工具:程序控制动态内存分配随机数排序和搜索[edit]
为算法的并行版本和执行控制组件(自 C++26 起)预定义的执行策略[edit]

语言支持库

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

概念库

基础库概念[edit]

诊断库

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

内存管理库

高级内存管理工具[edit]
多态分配器和内存资源[edit]
嵌套分配器类[edit]

元编程库

(C++11)
编译时有理数运算[edit]
编译时类型信息工具[edit]

通用实用程序库

(C++17)
std::any[edit]
(C++20)
位操作 函数[edit]
std::bitset 类模板[edit]
std::expected 类模板[edit]
函数对象、函数调用、绑定操作和引用包装器[edit]
std::optional 类模板[edit]
(C++11)
std::tuple 类模板[edit]
各种 实用程序组件[edit]
(C++17)
std::variant 类模板[edit]

容器库

(C++11)
std::array 容器[edit]
std::deque 容器[edit]
std::flat_mapstd::flat_multimap 容器适配器[edit]
std::flat_setstd::flat_multiset 容器适配器[edit]
std::forward_list 容器[edit]
std::inplace_vector 容器[edit]
std::list 容器[edit]
std::mapstd::multimap 关联容器[edit]
(C++23)
std::mdspan 视图[edit]
std::queuestd::priority_queue 容器适配器[edit]
std::setstd::multiset 关联容器[edit]
(C++20)
std::span 视图[edit]
std::stack 容器适配器[edit]
std::unordered_mapstd::unordered_multimap 无序关联容器[edit]
std::unordered_setstd::unordered_multiset 无序关联容器[edit]
std::vector 容器[edit]

迭代器库

范围迭代器[edit]

范围库

std::generator 类模板[edit]
(C++20)
范围访问、基本类型、要求、实用程序和适配器[edit]

算法库

在范围内操作的算法[edit]
范围内的数值运算[edit]

字符串库

各种 窄字符字符串处理函数[edit]
std::basic_string 类模板[edit]
std::basic_string_view 类模板[edit]

文本处理库

确定窄字符类别[edit]
std::to_charsstd::from_chars[edit]
C 本地化实用程序[edit]
(C++11)(C++17 中已弃用)(C++26 中已移除)
Unicode 转换工具[edit]
(C++11)
C 样式 Unicode 字符转换函数[edit]
各种 多字节 字符串处理函数[edit]
确定宽字符类别[edit]
(C++20)
格式化库 包括 std::format[edit]
本地化实用程序[edit]
(C++11)
支持正则表达式处理的类、算法和迭代器[edit]
文本编码标识[edit]

数值库

(C++11)
浮点环境 访问函数[edit]
常用数学函数[edit]
复数类型[edit]
(C++26)
基本线性代数算法[edit]
(C++20)
数学常量[edit]
(C++11)
随机数生成器和分布[edit]
用于表示和操作数值数组的类[edit]

时间库

(C++11)
C++ 时间实用程序[edit]
C 样式时间/日期实用程序[edit]

输入/输出库

格式化宏intmax_tuintmax_t 数学运算和转换[edit]
C 样式输入输出函数[edit]
std::filesystem::path 类和 支持函数[edit]
std::basic_fstreamstd::basic_ifstreamstd::basic_ofstream 类模板和类型定义[edit]
帮助函数,用于控制输入和输出的格式[edit]
std::ios_base 类,std::basic_ios 类模板和类型定义[编辑]
输入/输出库中所有类的向前声明[编辑]
几个标准流对象[编辑]
std::basic_istream 类模板和类型定义[编辑]
std::basic_ostreamstd::basic_iostream 类模板和类型定义[编辑]
(C++23)
格式化输出库,包括 std::print[编辑]
std::basic_spanstreamstd::basic_ispanstreamstd::basic_ospanstream 类模板和类型定义[编辑]
std::basic_stringstreamstd::basic_istringstreamstd::basic_ostringstream 类模板和类型定义[编辑]
std::basic_streambuf 类模板[编辑]
(C++98 中已弃用)(C++26 中已移除)
std::strstreamstd::istrstreamstd::ostrstream[编辑]
std::basic_osyncstreamstd::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++ 标准库同时包含一个同名头文件以及另一个形式为 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> 的行为相同[编辑]
行为如同将 <cinttypes> 中的每个名称都放置在全局命名空间中[编辑]
<climits> 的行为相同[编辑]
行为如同将 <clocale> 中的每个名称都放置在全局命名空间中[编辑]
行为如同将 <cmath> 中的每个名称都放置在全局命名空间中,
除了 数学特殊函数 的名称[编辑]
行为如同将 <csetjmp> 中的每个名称都放置在全局命名空间中[编辑]
行为如同将 <csignal> 中的每个名称都放置在全局命名空间中[编辑]
行为如同将 <cstdarg> 中的每个名称都放置在全局命名空间中[编辑]
行为如同将 <cstddef> 中的每个名称都放置在全局命名空间中,
除了 std::byte 和相关函数 的名称外[编辑]
行为表现得好像 <cstdint> 中的每个名称都放置在全局命名空间中[编辑]
行为表现得好像 <cstdio> 中的每个名称都放置在全局命名空间中[编辑]
行为表现得好像 <cstdlib> 中的每个名称都放置在全局命名空间中[编辑]
行为表现得好像 <cstring> 中的每个名称都放置在全局命名空间中[编辑]
行为表现得好像 <ctime> 中的每个名称都放置在全局命名空间中[编辑]
(C++11)
行为表现得好像 <cuchar> 中的每个名称都放置在全局命名空间中[编辑]
行为表现得好像 <cwchar> 中的每个名称都放置在全局命名空间中[编辑]
行为表现得好像 <cwctype> 中的每个名称都放置在全局命名空间中[编辑]

[编辑] 特殊的 C 兼容性头文件

头文件 <stdatomic.h> 声明了在 C 标准库中也提供的名称,并定义了 _Atomic 宏,它在 C 中是 关键字。与其他 xxx.h 头文件不同,没有提供相应的 <cstdatomic>

定义 _Atomic 并在 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 中内容的重载已经由这些头文件提供[编辑]
仅仅包含头文件 <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 头文件

C 头文件 <stdatomic.h>,(直到 C++23) <stdnoreturn.h><threads.h> 未包含在 C++ 中,也没有 cxxx 等效项。

[编辑] 实验性库

C++ TR/TS 也定义了几个头文件集合。

[编辑] 参见

C 文档 用于 C 标准库头文件