有制约算法 (C++20 起)

来自cppreference.com
< cpp‎ | algorithm
 
 
算法库
执行策略 (C++17)
不修改序列的操作
(C++11)
(C++11)
(C++11)
(C++17)
修改序列的操作
未初始化存储上的操作
划分操作
排序操作
(C++11)
二分搜索操作
集合操作(在已排序范围上)
堆操作
(C++11)
最小/最大操作
(C++11)
(C++17)
排列
数值运算
C 库
 
有制约算法
不修改序列的操作
                                        
                                        
修改系列的操作
未初始化存储上的操作
划分操作
                                                  
排序操作
二分搜索操作
集合操作(在已排序范围上)
堆操作
最小/最大操作
排列
 

C++20 在命名空间 std::ranges 中提供大多数算法的有制约版本,能以 Iterator-Sentinel 对或单个 Range 参数指定范围,并且支持投影和指向成员指针可调用对象。另外更改了大多数算法的返回类型,以返回算法执行过程中计算的所有潜在有用信息。

目录

[编辑] 算法概念与工具

头文件 <iterator> 提供为简化常用算法操作的制约而设计的概念和工具模板集合。

定义于头文件 <iterator>
定义于命名空间 std
间接可调用对象
指定可调用类型能以解引用 Readable 类型的结果调用
(概念) [编辑]
指定可调用类型,在以解引用一个 Readable 类型的结果调用时,满足 Predicate
(概念) [编辑]
指定可调用类型,在以解引用二个 Readable 类型的结果调用时,满足 Predicate
(概念) [编辑]
指定可调用类型,在以解引用二个 Readable 类型的结果调用时满足 StrictWeakOrder
(概念) [编辑]
常用算法要求
指定可从 Readable 类型移动值给 Writable 类型
(概念) [编辑]
指定可从 Readable 类型移动值给 Writable 类型,且该移动可以通过中间对象进行
(概念) [编辑]
指定可从 Readable 类型复制值给 Writable 类型
(概念) [编辑]
指定可从 Readable 类型复制值给 Writable 类型,且该复制可以通过中间对象进行
(概念) [编辑]
指定能交换二个 Readable 类型所引用的值
(概念) [编辑]
指定能比较二个 Readable 类型所引用的值
(概念) [编辑]
指定在原位重排元素的算法的共用要求
(概念) [编辑]
指定通过复制元素归并已排序序列到输出序列中的算法的要求
(概念) [编辑]
指定重排序列为有序序列的算法的共用要求
(概念) [编辑]
工具
计算在解引用某组 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
复制元素范围到未初始化的内存区域
(niebloid) [编辑]
复制一定量元素到未初始化的内存区域
(niebloid) [编辑]
复制一个对象到范围所定义的未初始化的内存区域
(niebloid) [编辑]
复制一个对象到起始与计数所定义的未初始化的内存区域
(niebloid) [编辑]
移动对象范围到未初始化的内存区域
(niebloid) [编辑]
移动一定量对象到未初始化的内存区域
(niebloid) [编辑]
在范围所定义的未初始化的内存区域以默认初始化构造对象
(niebloid) [编辑]
在起始与计数所定义的未初始化的内存区域以默认初始化构造对象
(niebloid) [编辑]
在范围所定义的未初始化的内存区域以值初始化构造对象
(niebloid) [编辑]
在起始与计数所定义的未初始化的内存区域以值初始化构造对象
(niebloid) [编辑]
销毁位于给定地址的元素
(niebloid) [编辑]
(C++20)
销毁范围中的元素
(niebloid) [编辑]
(C++20)
销毁范围中一定量的元素
(niebloid) [编辑]