工具库 - cppreference.com
来自cppreference.com
C++ 包含了各种工具库,提供了诸如位计数和部分函数应用的功能。这些库大致可以分为两类:
- 语言支持库
- 通用库
语言支持
语言支持库中所提供的类和函数与语言特性紧密相关,用以支持语言中的一些常见的惯用法。
实现属性 (C++20 起)
标头 <version> 提供关于 C++ 标准库的实现依赖信息(例如版本号和发行日期)。它也定义了特性测试宏。
类型支持
基本类型(如 std::size_t、std::nullptr_t)、RTTI(如 std::type_info)。
程序工具
终止(如 std::abort、std::atexit),环境(如 std::system),信号(如 std::raise)。
动态内存管理
智能指针(如 std::shared_ptr),分配器(如 std::allocator 或 std::pmr::memory_resource),C 风格内存管理(如 std::malloc)。
错误处理
异常(如 std::exception、std::terminate),断言(如 assert)。
变参数函数
支持接受任意数量参数的函数(例如通过 va_start、va_arg、va_end)。
初始化器列表 (C++11 起)
源码信息捕获 (C++20 起)
三路比较 (C++20 起)
在标头 | |
指定运算符 <=> 在给定类型上产生一致的结果 (概念) [编辑] | |
(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<=> 不可用 (定制点对象) [编辑] | |
协程支持 (C++20 起)
用于协程支持的类型,例如 std::coroutine_traits、std::coroutine_handle。
契约支持 (C++26 起)
用于契约支持的类型,例如 std::contracts::contract_violation。
通用工具
交换
类型操作 (C++11 起)
在标头 | |
(C++11) |
转发一个函数实参,并使用模板实参保留它的值类别 (函数模板) [编辑] |
(C++23) |
转发函数实参,如同将它转换为指定的类型模板实参的表达式的值类别与 const 性 (函数模板) [编辑] |
(C++11) |
转换实参为亡值 (函数模板) [编辑] |
(C++11) |
若移动构造函数不抛出则转换实参为亡值 (函数模板) [编辑] |
(C++17) |
获得到其实参的 const 引用 (函数模板) [编辑] |
(C++11) |
在不求值语境中获取到模板类型实参的对象的引用 (函数模板) [编辑] |
(C++23) |
转换枚举为其底层类型 (函数模板) [编辑] |
整数比较函数 (C++20 起)
关系运算符 (C++20 前)
构造标签 (C++11 起)
pair 与 tuple
在标头 | |
| 实现二元组,即一对值 (类模板) [编辑] | |
| 逐段构造标签 (标签) [编辑] | |
(C++14) |
实现编译时整数数列 (类模板) [编辑] |
在标头 | |
(C++11) |
实现固定大小的容器,可保有类型相异的元素 (类模板) [编辑] |
(C++17) |
以一个实参的元组来调用函数 (函数模板) [编辑] |
(C++17) |
以一个实参元组构造对象 (函数模板) [编辑] |
元组协议 (C++11 起) | |
在标头 | |
在标头 | |
在标头 | |
在标头 | |
(C++11) |
获得元组式类型的元素数量 (类模板) [编辑] |
(C++11) |
获得元组式类型的元素类型 (类模板) [编辑] |
和类型与类型擦除包装器 (C++17 起)
在标头 | |
(C++17) |
可能或可能不保有一个对象的包装器 (类模板) [编辑] |
在标头 | |
(C++23) |
含有一个预期值或错误值的包装器 (类模板) [编辑] |
在标头 | |
(C++17) |
类型安全的可辨识联合体 (类模板) [编辑] |
在标头 | |
(C++17) |
可保有任何可复制构造 (CopyConstructible) 类型的实例的对象。 (类) [编辑] |
在标头 | |
| 原位构造标签 (类模板) [编辑] | |
位集合 (C++20 起)
位操纵 (C++20 起)
标头 <bit> 提供几个用于访问、操纵和处理单独的位和位序列的函数模板。可以通过 std::endian 设施来探知标量类型的字节序(端序)。
函数对象 (C++11 起)
部分函数应用(如 std::bind)及相关工具:用于绑定的工具,如 std::ref 与 std::placeholders、多态函数包装器:std::function、预定义函数对象(如 std::plus、std::equal_to)、成员指针到函数转换器 std::mem_fn。