C++

编译器支持

自由(freestanding)与宿主(hosted)

语言

标准库

标准库头文件

具名要求

特性测试宏 (C++20)

语言支持库

概念库 (C++20)

诊断库

内存管理库

元编程库 (C++11)

通用工具库

容器库

迭代器库

范围库 (C++20)

算法库

字符串库

文本处理库

数值库

日期和时间库

输入/输出库

文件系统库 (C++17)

并发支持库 (C++11)

执行控制库 (C++26)

技术规范

符号索引

外部库

[编辑] 标准库头文件

语言支持

(C++20)

(C++26)

(C++20)

(C++11)

(C++11)

(C++20)

(C++23)

(C++20)

概念

(C++20)

诊断

(C++26)

(C++23)

(C++11)

内存管理

(C++17)

(C++11)

元编程

(C++11)

(C++11)

通用工具

(C++17)

(C++20)

(C++17)

(C++23)

(C++20)

(C++17)

(C++11)

(C++11)

(C++17)

容器

(C++11)

(C++23)

(C++23)

(C++11)

(C++26)

(C++26)

(C++23)

(C++20)

(C++11)

(C++11)

迭代器

范围

(C++23)

(C++20)

算法

字符串

(C++11)

(C++17)

文本处理

(C++11/17/26*)

(C++11)

(C++26)

数值

(C++11)

(C++26)

(C++20)

(C++11)

(C++26)

时间

(C++11)

C 兼容性

(C++11/17/20*)

(直到 C++20)

(C++11/17/20*)

(C++11/17/20*)

(C++11/17/20*)

输入/输出

(C++11)

(C++17)

(C++23)

(C++23)

(C++98/26*)

(C++20)

并发支持

(C++11)

(C++20)

(C++11)

(C++11)

(C++26)

(C++20)

(C++11)

(C++26)

(C++20)

(C++14)

(C++23)

(C++20)

(C++11)

执行支持

(C++17)

[编辑]

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

目录

1 多用途头文件

2 语言支持库

3 概念库

4 诊断库

5 内存管理库

6 元编程库

7 通用工具库

8 容器库

9 迭代器库

10 范围库

11 算法库

12 字符串库

13 文本处理库

14 数值库

15 时间库

16 输入/输出库

17 并发支持库

18 C 兼容头文件

18.1 特殊 C 兼容头文件

18.2 空 C 头文件

18.3 无意义的 C 头文件

18.4 不支持的 C 头文件

19 实验性库

20 参见

多用途头文件

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

(C++17)

算法并行版本和执行控制组件的预定义执行策略(C++26 起)[编辑]

语言支持库

浮点类型限制[编辑]

整数类型限制[编辑]

(C++20)

三路比较运算符支持[编辑]

(C++26)

契约支持库[编辑]

(C++20)

协程支持库[编辑]

保存(和跳转)到执行上下文的宏(和函数)[编辑]

信号管理函数和宏常量[编辑]

可变长度参数列表处理[编辑]

标准宏和 typedef[编辑]

(C++11)

固定宽度整数类型和其他类型限制[编辑]

异常处理工具[编辑]

(C++11)

std::initializer_list 类模板[编辑]

查询算术类型属性[编辑]

低级内存管理工具[编辑]

(C++20)

提供获取源代码位置的方法[编辑]

(C++23)

固定宽度浮点类型[编辑]

(C++11)

std::type_index[编辑]

运行时类型信息工具[编辑]

(C++20)

提供宏以验证库的实现状态[编辑]

概念库

(C++20)

基本库概念[编辑]

诊断库

将参数与零比较的条件编译宏[编辑]

包含上次错误码的宏[编辑]

(C++26)

调试库[编辑]

(C++23)

栈回溯库[编辑]

标准异常类型[编辑]

(C++11)

定义 std::error_code,一个依赖于平台的错误码[编辑]

内存管理库

高级内存管理工具[编辑]

(C++17)

多态分配器和内存资源[编辑]

(C++11)

嵌套分配器类[编辑]

元编程库

(C++11)

编译时有理数运算[编辑]

(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 容器适配器[编辑]

(C++11)

std::forward_list 容器[编辑]

(C++26)

std::hive 容器[编辑]

(C++26)

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 容器适配器[编辑]

(C++11)

std::unordered_map 和 std::unordered_multimap 无序关联容器[编辑]

(C++11)

std::unordered_set 和 std::unordered_multiset 无序关联容器[编辑]

std::vector 容器[编辑]

迭代器库

范围迭代器[编辑]

范围库 (Ranges library)

(C++23)

std::generator 类模板[编辑]

(C++20)

范围访问、原语、需求、工具和适配器[编辑]

算法库

在范围上操作的算法[编辑]

对范围内的值进行数值操作[编辑]

字符串库

各种窄字符字符串处理函数[编辑]

std::basic_string 类模板[编辑]

(C++17)

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

文本编码识别[编辑]

数值库

(C++11)

浮点环境访问函数[编辑]

常用数学函数[编辑]

复数类型[编辑]

(C++26)

基本线性代数算法 (BLAS)[编辑]

(C++20)

数学常数[编辑]

(C++11)

随机数生成器和分布[编辑]

(C++26)

数据并行类型以及对这些类型的操作[编辑]

表示和操作值数组的类[编辑]

时间库

(C++11)

C++ 时间工具[编辑]

C 风格时间/日期工具[编辑]

输入/输出库

(C++11)

格式化宏,intmax_t 和 uintmax_t 数学和转换[编辑]

C 风格输入/输出函数[编辑]

(C++17)

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

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 中已废弃)(在 C++26 中已移除)

std::strstream、std::istrstream、std::ostrstream[编辑]

(C++20)

std::basic_osyncstream、std::basic_syncbuf 和 typedef[编辑]

并发支持库

(C++11)

原子操作库[编辑]

(C++20)

屏障[编辑]

(C++11)

线程等待条件[编辑]

(C++11)

异步计算原语[编辑]

(C++26)

危险指针[编辑]

(C++20)

闩[编辑]

(C++11)

互斥原语[编辑]

(C++26)

读-复制-更新机制[编辑]

(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 标准库中也提供的名称,并定义了 _Atomic 宏,该宏是 C 中的关键字。与其他 xxx.h 头文件不同,不提供相应的

(C++23)

定义 _Atomic 并提供 C 标准库中的相应组件[编辑]

本节不完整原因:添加 C++26 的 ,以及 C29 的

[编辑] 空 C 头文件

头文件 不包含 C 标准库中的任何内容,而只是包含 C++ 标准库中的其他头文件。

(C++11)(C++17 中已弃用)(C++20 中已移除)

仅仅包含头文件 [编辑]

(C++11)

仅仅包含头文件 [编辑]

(C++11)(C++17 中已弃用)(C++20 中已移除)

仅仅包含头文件 :与 C 头文件 内容等效的重载已由这些头文件提供[编辑]

(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++23) 不包含在 C++ 中,也没有 cxxx 等效项。

[编辑] 实验性库

C++ TRs/TSs 也定义了几种头文件集合。

[编辑] 参见

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