C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- std::apply
- 库特性测试宏 (C++20)
- 程序支持工具
- std::initializer_list
- 函数对象
- std::hash
- std::pair
- std::tuple
- std::optional
- std::any
- std::variant
- 格式化库 (C++20)
- std::integer_sequence
- std::exchange
- std::make_from_tuple
- std::launder
- std::to_chars
- std::from_chars
- std::as_const
- std::source_location
- 变参数函数
- std::bitset
- std::cmp_equal, cmp_not_equal, cmp_less, cmp_greater, cmp_less_equal, cmp_greater_equal
- std::in_range
- std::declval
- std::forward
- std::move
- std::move_if_noexcept
- std::chars_format
- std::piecewise_construct_t
- std::piecewise_construct
- std::in_place, std::in_place_type, std::in_place_index, std::in_place_t, std::in_place_type_t, std::in_place_index_t
- 注释
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
工具库
C++ 包含了各种工具库,提供了诸如位计数和部分函数应用的功能。这些库大致可以分为两类:
- 语言支持库
- 通用库
语言支持
语言支持库中所提供的类和函数与语言特性紧密相关,用以支持语言中的一些常见的惯用法。
类型支持
基本类型(如 std::size_t 、 std::nullptr_t )、 RTTI (如 std::type_info )、类型特性(如 std::is_integral 、 std::rank )。
动态内存管理
智能指针(如 std::shared_ptr )、分配器(如 std::allocator 或 std::pmr::memory_resource )、C 风格内存管理(如 std::malloc )。
错误处理
异常(如 std::exception、std::terminate )、断言(如 assert )。
初始化器列表
定义于头文件
<initializer_list> | |
(C++11) |
允许使用初始化器列表语法初始化非聚合体类型 (类模板) |
变参数函数
支持接受任意数量参数的函数(例如通过 va_start 、 va_arg 、 va_end )。
实现属性头文件 <version> 提供关于 C++ 标准库的实现依赖信息(例如版本号和发行日期)。它亦定义特性测试宏。 源码信息捕获
|
(C++20 起) |
通用工具
程序工具
终止(如 std::abort 、 std::atexit )、环境(如 std::system )、信号(如 std::raise )。
日期和时间
时间跟踪(如 std::chrono::time_point 、 std::chrono::duration ), C 风格日期和时间(如 std::time 、 std::clock )。
位集合
定义于头文件
<bitset> | |
实现常量长度的位数组 (类) |
函数对象
部分函数应用(如 std::bind )及相关工具:用于绑定的工具,如 std::ref 与 std::placeholders 、多态函数包装器: std::function 、预定义函数对象(如 std::plus 、 std::equal_to )、方法到函数转换器 std::mem_fn 。
optional 、 variant 与 any
定义于头文件
<optional> | |
(C++17 起) |
可能或可能不保有一个对象的包装器 (类模板) |
定义于头文件
<variant> | |
(C++17 起) |
类型安全的可辨识联合体 (类模板) |
定义于头文件
<any> | |
(C++17 起) |
可保有任何可复制构造 (CopyConstructible) 类型的实例的对象。 (类) |
定义于头文件
<utility> | |
原位构造标签 (类模板) |
对与元组
实现二元组,即一对值 (类模板) | |
(C++11) |
实现固定大小的容器,它保有类型可以相异的元素 (类模板) |
(C++17) |
以一个实参的元组来调用函数 (函数模板) |
(C++17) |
以一个实参元组构造对象 (函数模板) |
(C++11) |
用于为逐段构造选择正确函数重载的标签类型 (类) |
(C++11) |
用于为逐段构造的函数消歧义的 piecewise_construct_t 类型的对象 (常量) |
(C++14) |
实现编译时整数数列 (类模板) |
swap 、 forward 与 move
定义于头文件
<utility> | |
交换两个对象的值 (函数模板) | |
(C++14) |
将实参替换为一个新值,并返回其先前值 (函数模板) |
(C++11) |
转发一个函数实参 (函数模板) |
(C++11) |
获得右值引用 (函数模板) |
(C++11) |
若移动构造函数不抛出则获得右值引用 (函数模板) |
定义于头文件
<concepts> | |
(C++20) |
交换两个对象的值 (定制点对象) |
类型运算
定义于头文件
<utility> | |
(C++11) |
获取到其实参的引用,用于不求值语境中 (函数模板) |
(C++17) |
获得到其实参的 const 引用 (函数模板) |
定义于头文件
<new> | |
(C++17) |
指针优化屏障 (函数模板) |
关系运算符与比较
定义于头文件
<compare> | |
指定运算符 <=> 在给定类型上产生一致的结果 (概念) | |
(C++20) |
三路比较的结果类型,支持所有 6 种运算符,不可替换,并允许不可比较的值 (类) |
(C++20) |
三路比较的结果类型,支持所有 6 种运算符且不可替换 (类) |
(C++20) |
三路比较的结果类型,支持所有 6 种运算符且可替换 (类) |
具名比较函数 (函数) | |
(C++20) |
实现 x <=> y 的函数对象 (类) |
(C++20) |
获得三路比较运算符 <=> 在给定类型上的结果 (类模板) |
(C++20) |
给定的全部类型都能转换到的最强比较类别 (类模板) |
(C++20) |
进行三路比较并产生 std::strong_ordering 类型结果 (定制点对象) |
(C++20) |
进行三路比较并产生 std::weak_ordering 类型结果 (定制点对象) |
(C++20) |
进行三路比较并产生 std::partial_ordering 类型结果 (定制点对象) |
进行三路比较并产生 std::strong_ordering 类型的结果,即使 operator<=> 不可用 (定制点对象) | |
(C++20) |
进行三路比较并产生 std::weak_ordering 类型的结果,即使 operator<=> 不可用 (定制点对象) |
进行三路比较并产生 std::partial_ordering 类型的结果,即使 operator<=> 不可用 (定制点对象) | |
定义于头文件
<utility> | |
定义于命名空间
std::rel_ops | |
(C++20 中弃用) |
自动生成基于用户定义的 operator== 和 operator< 的比较运算符 (函数模板) |
初等字符串转换
除了 C++ I/O 库、 C I/O 库、 C++ 字符串转换函数和 C 字符串转换函数提供的复杂的本地环境依赖的分析器和格式化器外,头文件 <charconv> 提供对于算术类型的轻量、不依赖本地环境、不分配、不抛出、仅供 ASCII 的分析器和格式化器。
定义于头文件
<charconv> | |
(C++17) |
转换整数或浮点值到字符序列 (函数) |
(C++17) |
转换字符序列到整数或浮点值 (函数) |
(C++17) |
指定 std::to_chars 和 std::from_chars 所用的格式 (枚举) |
格式化库 (C++20 起)
类型安全的字符串格式化工具,例如 std::format std::format_to 。
散列支持
(C++11) |
散列函数对象 (类模板) |