C++

编译器支持

自立实现与有宿主实现

语言

标准库

标准库标头

具名要求

功能特性测试宏

(C++20)

语言支持库

概念库

(C++20)

元编程库

(C++11)

诊断库

通用工具库

字符串库

容器库

迭代器库

范围库

(C++20)

算法库

数值库

本地化库

输入/输出库

文件系统库

(C++17)

正则表达式库

(C++11)

并发支持库

(C++11)

技术规范

符号索引

外部库

标准库标头

注:修订记号中的反斜杠 '/' 意味着此标头被弃用和/或被移除。

语言支持

(C++20)

(C++11)

(C++23)

(C++20)

(C++11)

(C++20)

(C++20)

概念

(C++20)

诊断

(C++23)

(C++11)

内存管理

(C++17)

(C++11)

元编程

(C++11)

(C++11)

通用工具

(C++11)

(C++17)

(C++17)

(C++17)

(C++23)

(C++11)

(C++17)

(C++17)

(C++20)

(C++20)

字符串

(C++17)

(C++11)

容器

(C++11)

(C++11)

(C++11)

(C++11)

(C++23)

(C++23)

(C++20)

(C++23)

迭代器

范围

(C++20)

(C++23)

算法

数值

(C++11)

(C++11)

(C++20)

日期时间

(C++11)

本地化

(C++11/17)

输入/输出

(C++23)

(C++23)

(C++20)

(C++17)

(C++11)

(C++98/)

正则表达式

并发支持

(C++20)

(C++11)

(C++11)

(C++23)

(C++11)

(C++14)

(C++11)

(C++20)

(C++20)

(C++20)

(C++11)

C 兼容

(C++11/17/20)

(C++11/17/20)

(C++11/17/20)

(C++11/17/20)

(C++20

前)

C++ 标准库的接口由下列标头的汇集定义。

概念库

(C++20)

基础库概念

协程库

(C++20)

协程支持库

工具库

(C++17)

std::any

std::bitset

类模板

(C++11)

C++ 时间工具

(C++20)

三路比较运算符支持

保存(及跳转)到执行环境的宏(与函数)

信号管理的函数与宏常量

变长实参列表的处理

标准宏与 typedef

通用工具:程序控制、动态内存分配、随机数、排序与搜索

C

风格日期/时间工具

(C++23)

std::expected 类模板

函数对象、函数调用、绑定操作及引用包装

(C++11)

std::initializer_list

类模板

(C++17)

std::optional

类模板

(C++20)

提供获得源码位置的手段

(C++11)

std::tuple

类模板

(C++11)

编译时类型信息

(C++11)

std::type_index

运行时类型信息工具

多种工具组件

(C++17)

std::variant

类模板

(C++20)

提供依赖实现的库信息

动态内存管理

高层内存管理工具

(C++17)

多态分配器与内存资源

低层内存管理工具

(C++11)

嵌套分配器类

数值极限

浮点类型的极限

(C++11)

格式化宏、

intmax_t 与 uintmax_t 数学与转换

整数类型的极限

(C++11)

定宽整数类型与其他类型的极限

查询算术类型属性的一致方式

(C++23)

可选的拓展浮点类型

错误处理

比较其实参与零的条件编译宏

含有最后一次错误号的宏

异常处理工具

(C++23)

栈踪库

标准异常对象

(C++11)

定义 std::error_code

,依赖平台的错误码

字符串库

确定窄字符类别的函数

(C++17)

std::to_chars 与 std::from_chars

多种窄字符串处理函数

(C++11)

C 风格 Unicode 字符转换函数

多种宽与多字节字符串处理函数

确定宽字符的类别的函数

(C++20)

格式化库,包含 std::format

std::basic_string

类模板

(C++17)

std::basic_string_view

类模板

容器库

(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

容器

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++20)

范围访问、元件、要求、工具及适配器

算法库

在范围上操作的算法

(C++17)

并行版本算法的预定义执行策略

数值库

(C++20)

位操纵函数

(C++11)

浮点环境访问函数

常用数学函数

复数类型

(C++20)

数学常数

范围中的值上的数值运算

(C++11)

随机数生成器与分布

(C++11)

编译时有理数算术

表示和操纵值的数组的类

本地化库

C 本地化工具

(C++11)(C++17

中弃用)

Unicode 转换设施

本地化工具

输入/输出库

C 风格输入输出函数

std::basic_fstream

、 std::basic_ifstream

、 std::basic_ofstream

类模板及数个 typedef

格式化输入与输出的辅助函数

std::ios_base

类、 std::basic_ios

类模板与数个 typedef

输入/输出库中所有类的前置声明

数个标准流对象

std::basic_istream

类模板与数个 typedef

std::basic_ostream

、 std::basic_iostream

类模板与数个 typedef

(C++23)

格式化输出库,包含 std::print

(C++23)

std::basic_spanstream、 std::basic_ispanstream、

std::basic_ospanstream 类模板与

typedef

std::basic_stringstream

、 std::basic_istringstream

、 std::basic_ostringstream

类模板与数个 typedef

std::basic_streambuf

类模板

(C++98

中弃用)

std::strstream

、 std::istrstream

、 std::ostrstream

(C++20)

std::basic_osyncstream 、 std::basic_syncbuf 及 typedef

文件系统库

(C++17)

std::path 类与支持函数

正则表达式库

(C++11)

支持正则表达式处理的类、算法及迭代器

原子操作库

(C++11)

原子操作库

线程支持库

(C++20)

屏障

(C++11)

线程等待条件

(C++11)

异步计算元件

(C++20)

(C++11)

互斥元件

(C++20)

信号量

(C++14)

共享互斥元件

(C++20)

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 标头也在全局命名空间中声明同样的名字:包含 肯定会提供

std::malloc,亦可提供

::malloc。包含

肯定会提供 ::malloc,亦可提供

std::malloc。这甚至适用于并非

C 标准库一部分的函数和函数重载。

注:xxx.h 标头在 C++98 中弃用并在 C++23 中解除弃用。对纯 C++

代码不鼓励使用这些标头,但它们不会在将来被移除。

表现同

表现如同将每个来自

的名字置于全局命名空间

表现同

(C++11)

表现如同将每个来自

的名字置于全局命名空间

表现同

(C++11)

表现如同将每个来自

的名字置于全局命名空间

表现同

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间,除了数学特殊函数的名字

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间,除了 std::byte

与相关函数的名字

(C++11)

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

(C++11)

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

表现如同将每个来自

的名字置于全局命名空间

特殊

C 兼容标头

标头 声明 C 标准库中亦提供的名称,并定义在 C 中为关键词的 _Atomic 宏。不同于其他

xxx.h 标头,不提供对应的

(C++23)

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

空的 C

标头

标头

不含有任何来自

C 标准库的内容,而且不过是包含其他来自 C++ 标准库的标头。

(C++11)(C++17

中弃用)(C++20

中移除)

简单地包含头文件

(C++11)

简单地包含头文件

(C++11)(C++17

中弃用)(C++20

中移除)

简单地包含头文件

:等价于 C 头文件 tgmath.h 的重载已于前述头文件提供

(C++11)

简单地包含头文件

无意义的

C 标头

标头 在 C++

中无意义,因为它们在 C 中提供的宏是 C++ 的关键词。

(C++20

中移除)

空头文件。 C 中

iso646.h 中出现的宏是 C++

中的关键词

(C++11)(C++17

中弃用)(C++20

中移除)

定义一个兼容性宏常量

(C++11)(C++17

中弃用)(C++20

中移除)

定义一个兼容性宏常量

无效果

(C++11)

定义一个兼容性宏常量

(C++11)

定义一个兼容性宏常量

不受支持的

C 标头

C++ 不包含 C 标头

(C++23

前)

而且它们没有 cxxx 等价版本。

实验性库

C++ TR/TS

也定义了数个标头的汇集。

参阅