实用工具库
来自cppreference.com
< cpp
C++ 包含了各种实用工具库,提供了诸如位计数和函数部分应用的功能。这些库大致可以分为两类:
- 语言支持库
- 通用库
目录 |
[编辑] 语言支持
语言支持库中所提供的类和函数与语言特性紧密相关,用以支持语言中的一些常见的惯用法。
[编辑] 类型支持
基本类型(如 std::size_t、std::nullptr_t 等)、RTTI(如 std::type_info 等)、类型特性(如 std::is_integral、std::rank 等)。
[编辑] 动态内存管理
智能指针(如 std::shared_ptr 等)、分配器(如 std::allocator 等)、C 风格的内存管理(如 std::malloc 等)。
[编辑] 错误处理
异常(如 std::exception、std::logic_error 等)、断言(如 assert 等)。
[编辑] 初始化器列表
| (C++11) |
允许使用初始化器列表语法初始化非聚合体类型 (类模板) |
[编辑] 可变参数函数
使得函数能够接受任意数量的参数(如通过 va_start、va_arg、va_end 等)。
[编辑] 通用工具
[编辑] 程序实用工具
终止(如 std::abort、std::atexit 等)、环境(如 std::system 等)、信号(如 std::raise 等)。
[编辑] 日期和时间
时间跟踪(如 std::chrono::time_point、std::chrono::duration 等),C 风格日期和时间(如 std::time、std::clock 等)。
[编辑] 位集合
| 实现常量长度的位数组 (类) |
[编辑] 函数对象
函数的部分应用(如 std::bind 等)、泛函数(如 std::function 等)、预置函数对象(如 std::plus、std::equal_to 等)。
[编辑] optional 、 variant 与 any
| 定义于头文件
<optional> | |
| (C++17 起) |
可能或可能不保有一个对象的包裹器 (类模板) |
| 定义于头文件
<variant> | |
| (C++17 起) |
有类型安全辨别的联合体 (类模板) |
| 定义于头文件
<any> | |
| (C++17 起) |
保有任何可复制构造(CopyConstructible)类型实例的对象。 (类) |
| 定义于头文件
<utility> | |
| 原位构造标签 (类模板) | |
[编辑] 对和元组
| 实现二元组,即一对值 (类模板) | |
| (C++11) |
实现固定大小的容器,它保有类型可以相异的元素 (类模板) |
| (C++11) |
用于为逐片构造选择正确函数重载的标签类型 (类) |
| (C++11) |
用于为逐片构造的函数消歧义的 piecewise_construct_t 类型的对象 (常量) |
[编辑] 交换、传递及移动
| 交换两个对象的值 (函数模板) | |
| (C++11) |
转发函数参数 (函数模板) |
| (C++11) |
获得右值引用 (函数模板) |
| (C++11) |
若移动构造函数不抛出则获得右值引用 (函数模板) |
[编辑] 类型运算
| 定义于头文件
<utility> | |
| (C++11) |
在不求值语境中获取到其参数的引用 (函数模板) |
| (C++17) |
获得到其参数的 const 引用 (函数模板) |
| 定义于头文件
<new> | |
| (C++17) |
指针优化屏障 (函数模板) |
[编辑] 关系运算符
| 定义于命名空间
std::rel_ops | |
| 基于用户定义的 operator== 和 operator< 自动生成各比较运算符 (函数模板) | |
[编辑] 初等字符串转换
在 C++ I/O 库、 C I/O 库、 C++ 字符串转换函数和 C 字符串转换函数提供的复杂的本地环境依赖的分析器和格式化器外,头文件
<utility> 提供对于算术类型的轻量、不依赖本地环境、不分配、不抛出、仅供 ASCII 的分析器和格式化器。
| (C++17) |
转换整数或浮点值到字符序列 (函数) |
| (C++17) |
转换字符序列到整数或浮点值 (函数) |
| (C++17) |
指定 std::to_chars 和 std::from_chars 所用的格式 (枚举) |
[编辑] 哈希支持
| (C++11) |
哈希函数对象 (类模板) |