C++ 工具库

C++ 工具库

C++ 包含了各种工具库,提供了诸如位计数部分函数应用的功能。这些库大致可以分为两类:

  • 语言支持库
  • 通用库

 

语言支持

语言支持库中所提供的类和函数与语言特性紧密相关,用以支持语言中的一些常见的惯用法。

类型支持

基本类型(如 std::size_t 、 std::nullptr_t )、 RTTI (如 std::type_info )、类型特性(如 std::is_integral 、 std::rank )。

实现属性

头文件 <version> 提供关于 C++ 标准库的实现依赖信息(例如版本号和发行日期)。它亦定义特性测试宏

(C++20 起)

程序工具

终止(如 std::abort 、 std::atexit )、环境(如 std::system )、信号(如 std::raise )。

动态内存管理

智能指针(如 std::shared_ptr )、分配器(如 std::allocator 或 std::pmr::memory_resource )、C 风格内存管理(如 std::malloc )。

对象访问

定义于头文件 <new>

launder

(C++17)

指针优化屏障 
(函数模板)

错误处理

异常(如 std::exceptionstd::terminate )、断言(如 assert )。

源码信息捕获

定义于头文件 <source_location>

source_location

(C++20)

表示关于源码的信息,例如文件名、行号以及函数名的类 
(类)

初始化器列表

定义于头文件 <initializer_list>

initializer_list

(C++11)

列表初始化中创建临时数组然后引用它 
(类模板)

三路比较

定义于头文件 <compare>

three_way_comparablethree_way_comparable_with

(C++20)

指定运算符 <=> 在给定类型上产生一致的结果 
(概念)

partial_ordering

(C++20)

三路比较的结果类型,支持所有 6 种运算符,不可替换,并允许不可比较的值 
(类)

weak_ordering

(C++20)

三路比较的结果类型,支持所有 6 种运算符且不可替换 
(类)

strong_ordering

(C++20)

三路比较的结果类型,支持所有 6 种运算符且可替换 
(类)

is_eqis_neqis_ltis_lteqis_gtis_gteq

(C++20)

具名比较函数 
(函数)

compare_three_way

(C++20)

实现 x <=> y 的函数对象 
(类)

compare_three_way_result

(C++20)

获得三路比较运算符 <=> 在给定类型上的结果 
(类模板)

common_comparison_category

(C++20)

给定的全部类型都能转换到的最强比较类别 
(类模板)

strong_order

(C++20)

进行三路比较并产生 std::strong_ordering 类型结果 
(定制点对象)

weak_order

(C++20)

进行三路比较并产生 std::weak_ordering 类型结果 
(定制点对象)

partial_order

(C++20)

进行三路比较并产生 std::partial_ordering 类型结果 
(定制点对象)

compare_strong_order_fallback

(C++20)

进行三路比较并产生 std::strong_ordering 类型的结果,即使 operator<=>不可用 
(定制点对象)

compare_weak_order_fallback

(C++20)

进行三路比较并产生 std::weak_ordering 类型的结果,即使 operator<=> 不可用 
(定制点对象)

compare_partial_order_fallback

(C++20)

进行三路比较并产生 std::partial_ordering 类型的结果,即使 operator<=>不可用 
(定制点对象)

协程支持

用于协程支持的类型,例如 std::coroutine_traits、 std::coroutine_handle。

(C++20 起)

变参数函数

支持接受任意数量参数的函数(例如通过 va_start 、 va_arg 、 va_end )。

通用工具

swap 与类型运算

定义于头文件 <utility>

swap

交换两个对象的值 
(函数模板)

exchange

(C++14)

将实参替换为一个新值,并返回其先前值 
(函数模板)

forward

(C++11)

转发一个函数实参 
(函数模板)

move

(C++11)

获得右值引用 
(函数模板)

move_if_noexcept

(C++11)

若移动构造函数不抛出则获得右值引用 
(函数模板)

as_const

(C++17)

获得到其实参的 const 引用 
(函数模板)

declval

(C++11)

获取到其实参的引用,用于不求值语境中 
(函数模板)

定义于头文件 <concepts>

ranges::swap

(C++20)

交换两个对象的值 
(定制点对象)

整数比较函数

定义于头文件 <utility>

cmp_equalcmp_not_equalcmp_lesscmp_greatercmp_less_equalcmp_greater_equal

(C++20)

比较二个整数值,而无转换所致的值更改 
(函数模板)

in_range

(C++20)

检查整数值是否在给定整数类型的范围内 
(函数模板)

关系运算符

定义于头文件 <utility>

定义于命名空间 std::rel_ops

operator!=operator>operator<=operator>=

(C++20 中弃用)

自动生成基于用户定义的 operator== 和 operator< 的比较运算符 
(函数模板)

对与元组

定义于头文件 <utility>

pair

实现二元组,即一对值 
(类模板)

piecewise_construct_t

(C++11)

用于为逐段构造选择正确函数重载的标签类型 
(类)

piecewise_construct

(C++11)

用于为逐段构造的函数消歧义的 piecewise_construct_t 类型的对象 
(常量)

integer_sequence

(C++14)

实现编译时整数数列 
(类模板)

定义于头文件 <tuple>

tuple

(C++11)

实现固定大小的容器,它保有类型可以相异的元素 
(类模板)

apply

(C++17)

以一个实参的元组来调用函数 
(函数模板)

make_from_tuple

(C++17)

以一个实参元组构造对象 
(函数模板)

optional 、 variant 与 any

定义于头文件 <optional>

optional

(C++17)

可能或可能不保有一个对象的包装器 
(类模板)
 

定义于头文件 <variant>

variant

(C++17)

类型安全的可辨识联合体 
(类模板)
 

定义于头文件 <any>

any

(C++17)

可保有任何可复制构造 (CopyConstructible) 类型的实例的对象。 
(类)
 

定义于头文件 <utility>

in_placein_place_typein_place_indexin_place_tin_place_type_tin_place_index_t

(C++17)

原位构造标签 
(类模板)

位集合

定义于头文件 <bitset>

bitset

实现常量长度的位数组 
(类模板)

函数对象

部分函数应用(如 std::bind )及相关工具:用于绑定的工具,如 std::ref 与 std::placeholders 、多态函数包装器: std::function 、预定义函数对象(如 std::plus 、 std::equal_to )、方法到函数转换器 std::mem_fn 。

散列支持

定义于头文件 <functional>

hash

(C++11)

散列函数对象 
(类模板)

日期和时间

时间跟踪(如 std::chrono::time_point 、 std::chrono::duration ), C 风格日期和时间(如 std::time 、 std::clock )。

初等字符串转换

除了 C++ I/O 库、 C I/O 库、 C++ 字符串转换函数和 C 字符串转换函数提供的复杂的本地环境依赖的分析器和格式化器外,头文件 <charconv> 提供对于算术类型的轻量、不依赖本地环境、不分配、不抛出、仅供 ASCII 的分析器和格式化器。

定义于头文件 <charconv>

to_chars

(C++17)

转换整数或浮点值到字符序列 
(函数)

from_chars

(C++17)

转换字符序列到整数或浮点值 
(函数)

chars_format

(C++17)

指定 std::to_chars 和 std::from_chars 所用的格式 
(枚举)

格式化库

类型安全的字符串格式化工具,例如 std::format 、 std::format_to 。

(C++20 起)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值