C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- std::execution::sequenced_policy, std::execution::parallel_policy, std::execution::parallel_unsequenced_policy, std::execution::unsequenced_policy
- 有制约算法 (C++20 起)
- std::sort
- std::reduce
- std::inclusive_scan
- std::exclusive_scan
- std::random_shuffle, std::shuffle
- std::clamp
- std::equal
- std::is_permutation
- std::mismatch
- std::swap
- std::search
- std::transform
- std::for_each
- std::make_heap
- std::ranges::all_of, std::ranges::any_of, std::ranges::none_of
- std::ranges::for_each
- std::ranges::count, std::ranges::count_if
- std::ranges::mismatch, std::ranges::mismatch_result
- std::ranges::find, std::ranges::find_if, std::ranges::find_if_not
- std::ranges::adjacent_find
- std::is_execution_policy
- std::execution::seq, std::execution::par, std::execution::par_unseq, std::execution::unseq
- std::all_of, std::any_of, std::none_of
- std::for_each_n
- std::count, std::count_if
- std::adjacent_find
- std::find, std::find_if, std::find_if_not
- std::find_end
- std::find_first_of
- std::search_n
- std::lexicographical_compare
- std::lexicographical_compare_three_way
- std::copy, std::copy_if
- std::copy_n
- std::copy_backward
- std::move
- std::move_backward
- std::shift_left, std::shift_right
- std::fill
- std::fill_n
- std::generate
- std::generate_n
- std::iter_swap
- std::swap_ranges
- std::sample
- std::remove, std::remove_if
- std::replace, std::replace_if
- std::reverse
- std::rotate
- std::unique
- std::remove_copy, std::remove_copy_if
- std::replace_copy, std::replace_copy_if
- std::reverse_copy
- std::rotate_copy
- std::unique_copy
- std::is_partitioned
- std::partition_point
- std::partition
- std::partition_copy
- std::stable_partition
- std::is_sorted
- std::is_sorted_until
- std::stable_sort
- std::partial_sort
- std::partial_sort_copy
- std::nth_element
- std::lower_bound
- std::upper_bound
- std::binary_search
- std::equal_range
- std::merge
- std::inplace_merge
- std::set_difference
- std::set_intersection
- std::set_symmetric_difference
- std::set_union
- std::includes
- std::is_heap
- std::is_heap_until
- std::sort_heap
- std::push_heap
- std::pop_heap
- std::max
- std::max_element
- std::min
- std::min_element
- std::minmax
- std::minmax_element
- std::next_permutation
- std::prev_permutation
- std::iota
- std::inner_product
- std::adjacent_difference
- std::accumulate
- std::transform_reduce
- std::partial_sum
- std::transform_inclusive_scan
- std::transform_exclusive_scan
- std::qsort
- std::bsearch
- 注释
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
有制约算法 (C++20 起)
C++20 在命名空间 std::ranges
中提供大多数算法的有制约版本,能以迭代器-哨位对或单个 range 参数指定范围,并且支持投影和指向成员指针可调用对象。另外更改了大多数算法的返回类型,以返回算法执行过程中计算的所有潜在有用信息。
算法概念与工具
头文件 <iterator> 提供为简化常用算法操作的制约而设计的概念和工具模板集合。
定义于头文件
<iterator> | |
定义于命名空间
std | |
间接可调用对象 | |
指定可调用类型能以解引用某个 indirectly_readable 类型的结果进行调用 (概念) | |
指定可调用类型,在以解引用一个 indirectly_readable 类型的结果进行调用时,满足 predicate (概念) | |
指定可调用类型,在以解引用两个 indirectly_readable 类型的结果进行调用时,满足 predicate (概念) | |
指定可调用类型,在以解引用两个 indirectly_readable 类型的结果进行调用时,满足 equivalence_relation (概念) | |
指定可调用类型,在以解引用两个 indirectly_readable 类型的结果进行调用时,满足 strict_weak_order (概念) | |
常用算法要求 | |
指定可从 indirectly_readable 类型移动值给 indirectly_writable 类型 (概念) | |
指定可从 indirectly_readable 类型移动值给 indirectly_writable 类型,且该移动可以通过中间对象进行 (概念) | |
指定可从 indirectly_readable 类型复制值给 indirectly_writable 类型 (概念) | |
指定可从 indirectly_readable 类型复制值给 indirectly_writable 类型,且该复制可以通过中间对象进行 (概念) | |
指定能交换两个 indirectly_readable 类型所引用的值 (概念) | |
指定能比较两个 indirectly_readable 类型所引用的值 (概念) | |
指定在原位重排元素的算法的共用要求 (概念) | |
指定通过复制元素将已排序序列归并到输出序列中的算法的要求 (概念) | |
指定重排序列为有序序列的算法的共用要求 (概念) | |
工具 | |
计算在解引用某组 indirectly_readable 类型的结果上调用可调用对象的结果 (别名模板) | |
用于对接受投影的算法指定制约的辅助模板 (类模板) |
有制约算法
定义于头文件
<algorithm> | |
定义于命名空间
std::ranges | |
不修改序列的操作 | |
检查谓词是否对范围中所有、任一或无元素为 true (niebloid) | |
应用函数到范围中的元素 (niebloid) | |
返回满足指定判别标准的元素数 (niebloid) | |
寻找两个范围出现不同的首个位置 (niebloid) | |
确定两个元素集合是否是相同的 (niebloid) | |
当一个范围按字典顺序小于另一个范围时,返回 true (niebloid) | |
寻找首个满足特定判别标准的元素 (niebloid) | |
在特定范围中寻找最后出现的元素序列 (niebloid) | |
搜索元素集合中的任意元素 (niebloid) | |
查找首对相邻的相同(或满足给定谓词的)元素 (niebloid) | |
搜索一个元素范围 (niebloid) | |
在范围中搜索一定量的某个元素的连续副本 (niebloid) | |
修改序列的操作 | |
将某一范围的元素复制到一个新的位置 (niebloid) | |
将一定数目的元素复制到一个新的位置 (niebloid) | |
按从后往前的顺序复制一个范围内的元素 (niebloid) | |
将某一范围的元素移动到一个新的位置 (niebloid) | |
按从后往前的顺序移动某一范围的元素到新的位置 (niebloid) | |
将一个给定值复制赋值给一个范围内的每个元素 (niebloid) | |
将一个值复制赋值给一定量的元素 (niebloid) | |
将一个函数应用于某一范围的各个元素 (niebloid) | |
保存函数结果到一个范围中 (niebloid) | |
保存 N 次函数应用的结果 (niebloid) | |
移除满足特定判别标准的元素 (niebloid) | |
复制一个范围的元素,忽略满足特定判别标准的元素 (niebloid) | |
将所有满足特定判别标准的值替换为另一个值 (niebloid) | |
复制一个范围内的元素,并将满足特定判别标准的元素替换为另一个值 (niebloid) | |
交换两个范围的元素 (niebloid) | |
逆转范围中的元素顺序 (niebloid) | |
创建一个范围的逆向副本 (niebloid) | |
旋转范围中的元素顺序 (niebloid) | |
复制并旋转元素范围 (niebloid) | |
随机重排范围中的元素 (niebloid) | |
移除范围中的连续重复元素 (niebloid) | |
创建某范围的不含连续重复元素的副本 (niebloid) | |
划分操作 | |
判断范围是否已按给定的谓词划分 (niebloid) | |
将范围中的元素分为二组 (niebloid) | |
复制一个范围,将各元素分为二组 (niebloid) | |
将元素分成二组,同时保持其相对顺序 (niebloid) | |
定位已划分范围的划分点 (niebloid) | |
排序操作 | |
检查范围是否以升序排序 (niebloid) | |
寻找最大的已排序子范围 (niebloid) | |
将范围按升序排序 (niebloid) | |
排序一个范围的前 N 个元素 (niebloid) | |
对范围内的元素进行复制并部分排序 (niebloid) | |
将范围内的元素排序,同时保持相等的元素之间的顺序 (niebloid) | |
将给定的范围部分排序,确保其按给定元素划分 (niebloid) | |
二分搜索操作(在已排序范围上) | |
返回指向首个不小于给定值的元素的迭代器 (niebloid) | |
返回指向首个大于某值的元素的迭代器 (niebloid) | |
确定元素是否存在于某范围中 (niebloid) | |
返回匹配特定键值的元素范围 (niebloid) | |
集合操作(在已排序范围上) | |
归并二个已排序范围 (niebloid) | |
在原位归并两个有序范围 (niebloid) | |
若一个集合是另一个的子集则返回 true (niebloid) | |
计算两个集合的差集 (niebloid) | |
计算两个集合的交集 (niebloid) | |
计算两个集合的对称差 (niebloid) | |
计算两个集合的并集 (niebloid) | |
堆操作 | |
检查给定范围是否为最大堆 (niebloid) | |
寻找能成为最大堆的最大子范围 (niebloid) | |
从一个元素范围创建出一个最大堆 (niebloid) | |
将一个元素加入到一个最大堆 (niebloid) | |
从最大堆中移除最大元素 (niebloid) | |
将一个最大堆变成一个按升序排序的元素范围 (niebloid) | |
最小/最大操作 | |
返回给定值的较大者 (niebloid) | |
返回范围中的最大元素 (niebloid) | |
返回给定值的较小者 (niebloid) | |
返回范围中的最小元素 (niebloid) | |
返回两个元素的较小和较大者 (niebloid) | |
返回范围中的最小和最大元素 (niebloid) | |
排列操作 | |
确定一个序列是否为另一序列的重排 (niebloid) | |
产生某个元素范围的按字典序下一个较大的排列 (niebloid) | |
产生某个元素范围的按字典序下一个较小的排列 (niebloid) |
有制约的未初始化内存算法
定义于头文件
<memory> | |
定义于命名空间
std::ranges | |
(C++20) |
复制元素范围到未初始化的内存区域 (niebloid) |
(C++20) |
复制一定量元素到未初始化的内存区域 (niebloid) |
(C++20) |
复制一个对象到范围所定义的未初始化的内存区域 (niebloid) |
(C++20) |
复制一个对象到起始与计数所定义的未初始化的内存区域 (niebloid) |
(C++20) |
移动对象范围到未初始化的内存区域 (niebloid) |
(C++20) |
移动一定量对象到未初始化的内存区域 (niebloid) |
在范围所定义的未初始化的内存区域以默认初始化构造对象 (niebloid) | |
在起始与计数所定义的未初始化的内存区域以默认初始化构造对象 (niebloid) | |
在范围所定义的未初始化的内存区域以值初始化构造对象 (niebloid) | |
在起始与计数所定义的未初始化的内存区域以值初始化构造对象 (niebloid) | |
(C++20) |
销毁位于给定地址的元素 (niebloid) |
(C++20) |
销毁范围中的元素 (niebloid) |
(C++20) |
销毁范围中一定量的元素 (niebloid) |