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)

迭代器
<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++ 标准库的接口由下列标头的汇集定义。

目录

概念库

基础库概念 [编辑]

协程库

协程支持库 [编辑]

工具库

(C++17)
std::any[编辑]
std::bitset 类模板 [编辑]
(C++11)
C++ 时间工具 [编辑]
(C++20)
三路比较运算符支持 [编辑]
保存(及跳转)到执行环境的宏(与函数) [编辑]
用于信号管理的函数与宏常量 [编辑]
变长实参列表的处理 [编辑]
标准宏与 typedef [编辑]
通用工具:程序控制动态内存分配随机数排序与搜索 [编辑]
C 风格日期/时间工具 [编辑]
调试库 [编辑]
std::expected 类模板 [编辑]
函数对象、函数调用、绑定操作及引用包装 [编辑]
std::initializer_list 类模板 [编辑]
std::optional 类模板 [编辑]
提供获得源码位置的手段 [编辑]
(C++11)
std::tuple 类模板 [编辑]
编译时类型信息 [编辑]
std::type_index [编辑]
运行时类型信息工具 [编辑]
多种工具组件 [编辑]
(C++17)
std::variant 类模板 [编辑]
(C++20)
提供依赖实现的库信息 [编辑]
动态内存管理
高层内存管理工具 [编辑]
多态分配器与内存资源 [编辑]
低层内存管理工具 [编辑]
嵌套分配器类 [编辑]
数值极限
浮点类型的极限 [编辑]
格式化宏intmax_tuintmax_t 数学与转换 [编辑]
整数类型的极限 [编辑]
(C++11)
定宽整数类型其他类型的极限 [编辑]
查询算术类型属性的一致方式 [编辑]
可选的拓展浮点类型 [编辑]
错误处理
比较其实参与零的条件编译宏 [编辑]
含有最后一次错误号的宏 [编辑]
异常处理工具 [编辑]
栈踪迹[编辑]
标准异常对象 [编辑]
定义 std::error_code,依赖平台的错误码 [编辑]

字符串库

确定窄字符类别的函数 [编辑]
std::to_charsstd::from_chars [编辑]
多种窄字符串处理函数 [编辑]
(C++11)
C 风格 Unicode 字符转换函数 [编辑]
多种多字节字符串处理函数 [编辑]
确定宽字符的类别的函数 [编辑]
(C++20)
格式化库,包含 std::format [编辑]
std::basic_string 类模板 [编辑]
std::basic_string_view 类模板 [编辑]

容器库

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

迭代器库

范围迭代器 [编辑]

范围库

std::generator 类模板 [编辑]
(C++20)
范围访问、元件、要求、工具及适配器 [编辑]

算法库

在范围上操作的算法 [编辑]
并行版本算法的预定义执行策略 [编辑]

数值库

(C++20)
位操纵函数 [编辑]
(C++11)
浮点环境访问函数 [编辑]
常用数学函数 [编辑]
复数类型 [编辑]
(C++26)
基本线性代数算法 [编辑]
(C++20)
数学常数 [编辑]
范围中的值上的数值运算 [编辑]
(C++11)
随机数生成器与分布 [编辑]
(C++11)
编译时有理数算术 [编辑]
表示和操纵值的数组的类 [编辑]

本地化库

C 本地化工具 [编辑]
(C++11)(C++17 中弃用)(C++26 中移除)
Unicode 转换设施 [编辑]
本地化工具 [编辑]
文本编码识别 [编辑]

输入/输出库

C 风格输入输出函数 [编辑]
std::basic_fstreamstd::basic_ifstreamstd::basic_ofstream 类模板及数个 typedef [编辑]
格式化输入与输出的辅助函数 [编辑]
std::ios_base 类、 std::basic_ios 类模板与数个 typedef [编辑]
输入/输出库中所有类的前置声明 [编辑]
数个标准流对象 [编辑]
std::basic_istream 类模板与数个 typedef [编辑]
std::basic_ostreamstd::basic_iostream 类模板与数个 typedef [编辑]
(C++23)
格式化输出库,包含 std::print [编辑]
std::basic_spanstreamstd::basic_ispanstreamstd::basic_ospanstream 类模板与 typedef [编辑]
std::basic_stringstreamstd::basic_istringstreamstd::basic_ostringstream 类模板与数个 typedef [编辑]
std::basic_streambuf 类模板 [编辑]
(C++98 中弃用)(C++26 中移除)
std::strstreamstd::istrstreamstd::ostrstream [编辑]
std::basic_osyncstreamstd::basic_syncbuf 及 typedef [编辑]

文件系统库

std::path 类与支持函数 [编辑]

正则表达式库

(C++11)
支持正则表达式处理的类、算法及迭代器 [编辑]

原子操作库

(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> 的名字置于全局命名空间 [编辑]
表现如同将除了 std::byte 与相关函数的名字之外的
每个来自 <cstddef> 的名字置于全局命名空间 [编辑]
表现如同将每个来自 <cstdint> 的名字置于全局命名空间 [编辑]
表现如同将每个来自 <cstdio> 的名字置于全局命名空间 [编辑]
表现如同将每个来自 <cstdlib> 的名字置于全局命名空间 [编辑]
表现如同将每个来自 <cstring> 的名字置于全局命名空间 [编辑]
表现如同将每个来自 <ctime> 的名字置于全局命名空间 [编辑]
(C++11)
表现如同将每个来自 <cuchar> 的名字置于全局命名空间 [编辑]
表现如同将每个来自 <cwchar> 的名字置于全局命名空间 [编辑]
表现如同将每个来自 <cwctype> 的名字置于全局命名空间 [编辑]

[编辑] 特殊 C 兼容标头

标头 <stdatomic.h> 声明 C 标准库中亦提供的名称,并定义在 C 中为关键词_Atomic 宏。不同于其他 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++ 不包含 C 标头 <stdatomic.h> (C++23 前)<stdnoreturn.h><threads.h> 而且它们没有 cxxx 等价版本。

[编辑] 实验性库

C++ TR/TS 也定义了数个标头的汇集。

[编辑] 参阅

C 标准库标头C 文档