算法库_C++中文网
算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操作。注意范围定义为 [first, last) ,其中 last 指代要查询或修改的最后元素的后一个元素。
有制约算法
C++20 在命名空间 std::ranges 中提供大多数算法的有制约版本,能以迭代器-哨位对或单个 range 参数指定范围,并且支持投影和指向成员指针可调用对象。另外更改了大多数算法的返回类型,以返回算法执行过程中计算的所有潜在有用信息。
std::vector<int> v = {7, 1, 4, 0, -1}; std::ranges::sort(v); // 有制约算法
头文件 <iterator> 提供为简化常用算法操作的制约而设计的概念和工具模板集合。
(C++20 起)不修改序列的操作
定义于头文件 <algorithm>
(函数模板) 应用函数到范围中的元素
(函数模板) 应用一个函数对象到序列的前 n 个元素
(函数模板) 返回满足指定判别标准的元素数
(函数模板) 寻找两个范围出现不同的首个位置
(函数模板) 寻找首个满足特定判别标准的元素
(函数模板) 在特定范围中寻找最后出现的元素序列
(函数模板) 搜索元素集合中的任意元素
(函数模板) 查找首对相邻的相同(或满足给定谓词的)元素
(函数模板) 搜索一个元素范围
(函数模板) 在范围中搜索一定量的某个元素的连续副本
(函数模板)
修改序列的操作
定义于头文件 <algorithm>
(函数模板) 将一定数目的元素复制到一个新的位置
(函数模板) 按从后往前的顺序复制一个范围内的元素
(函数模板) 将某一范围的元素移动到一个新的位置
(函数模板) 按从后往前的顺序移动某一范围的元素到新的位置
(函数模板) 将一个给定值复制赋值给一个范围内的每个元素
(函数模板) 将一个给定值复制赋值给一个范围内的 N 个元素
(函数模板) 将一个函数应用于某一范围的各个元素,并在目标范围存储结果
(函数模板) 将相继的函数调用结果赋值给一个范围中的每个元素
(函数模板) 将相继的函数调用结果赋值给一个范围中的 N 个元素
(函数模板) 移除满足特定判别标准的元素
(函数模板) 复制一个范围的元素,忽略满足特定判别标准的元素
(函数模板) 将所有满足特定判别标准的值替换为另一个值
(函数模板) 复制一个范围内的元素,并将满足特定判别标准的元素替换为另一个值
(函数模板) 交换两个对象的值
(函数模板) 交换两个范围的元素
(函数模板) 交换两个迭代器所指向的元素
(函数模板) 逆转范围中的元素顺序
(函数模板) 创建一个范围的逆向副本
(函数模板) 迁移范围中的元素
(函数模板) 旋转范围中的元素顺序
(函数模板) 复制并旋转元素范围
(函数模板) 随机重排范围中的元素
(函数模板) 从一个序列中随机选择 n 个元素
(函数模板) 移除范围内的连续重复元素
(函数模板) 创建某范围的不含连续重复元素的副本
(函数模板)
划分操作
定义于头文件 <algorithm>
(函数模板) 将范围中的元素分为两组
(函数模板) 复制一个范围,将各元素分为两组
(函数模板) 将元素分为两组,同时保留其相对顺序
(函数模板) 定位已划分范围的划分点
(函数模板)
排序操作
定义于头文件 <algorithm>
(函数模板) 找出最大的已排序子范围
(函数模板) 将范围按升序排序
(函数模板) 排序一个范围的前 N 个元素
(函数模板) 对范围内的元素进行复制并部分排序
(函数模板) 将范围内的元素排序,同时保持相等的元素之间的顺序
(函数模板) 将给定的范围部分排序,确保其按给定元素划分
(函数模板)
二分搜索操作(在已排序范围上)
定义于头文件 <algorithm>
(函数模板) 返回指向第一个大于给定值的元素的迭代器
(函数模板) 确定元素是否存在于某范围中
(函数模板) 返回匹配特定键值的元素范围
(函数模板)
集合操作(在已排序范围上)
定义于头文件 <algorithm>
(函数模板) 就地归并两个有序范围
(函数模板) 若一个集合是另一个的子集则返回 true
(函数模板) 计算两个集合的差集
(函数模板) 计算两个集合的交集
(函数模板) 计算两个集合的对称差
(函数模板) 计算两个集合的并集
(函数模板)
堆操作
定义于头文件 <algorithm>
(函数模板) 查找能成为最大堆的最大子范围
(函数模板) 从一个元素范围创建出一个最大堆
(函数模板) 将一个元素加入到一个最大堆
(函数模板) 从最大堆中移除最大元素
(函数模板) 将一个最大堆变成一个按升序排序的元素范围
(函数模板)
最小/最大操作
定义于头文件 <algorithm>
(函数模板) 返回范围内的最大元素
(函数模板) 返回各给定值中的较小者
(函数模板) 返回范围内的最小元素
(函数模板) 返回两个元素的较小和较大者
(函数模板) 返回范围内的最小元素和最大元素
(函数模板) 在一对边界值间夹逼一个值
(函数模板)
比较操作
定义于头文件 <algorithm>
(函数模板) 当一个范围按字典顺序小于另一个范围时,返回 true
(函数模板) 用三路比较比较两个范围
(函数模板)
排列操作
定义于头文件 <algorithm>
(函数模板) 产生某个元素范围的按字典顺序的下一个较大的排列
(函数模板) 产生某个元素范围的按字典顺序的下一个较小的排列
(函数模板)
数值运算
定义于头文件 <numeric>
(函数模板) 对一个范围内的元素求和
(函数模板) 计算两个范围的元素的内积
(函数模板) 计算范围内各相邻元素之间的差
(函数模板) 计算范围内元素的部分和
(函数模板) 类似 std::accumulate,但不依序执行
(函数模板) 类似 std::partial_sum,第 i 个和中排除第 i 个输入
(函数模板) 类似 std::partial_sum,第 i 个和中包含第 i 个输入
(函数模板) 应用一个函数对象,然后以乱序规约
(函数模板) 应用一个函数对象,然后进行排除扫描
(函数模板) 应用一个函数对象,然后进行包含扫描
(函数模板)
未初始化内存上的操作
| 定义于头文件 | |
| 将范围内的对象复制到未初始化的内存区域 (函数模板) | |
| (C++11) |
将指定数量的对象复制到未初始化的内存区域 (函数模板) |
| 复制一个对象到以范围定义的未初始化内存区域 (函数模板) | |
| 复制一个对象到以起点和计数定义的未初始化内存区域 (函数模板) | |
| (C++17) |
移动一个范围的对象到未初始化的内存区域 (函数模板) |
| (C++17) |
移动一定数量对象到未初始化内存区域 (函数模板) |
| 在范围所定义的未初始化的内存区域以默认初始化构造对象 (函数模板) | |
| 在起始和计数所定义的未初始化内存区域用默认初始化构造对象 (函数模板) | |
| 在范围所定义的未初始化内存中用值初始化构造对象 (函数模板) | |
| 在起始和计数所定义的未初始化内存区域以值初始化构造对象 (函数模板) | |
| (C++17) |
销毁在给定地址的对象 (函数模板) |
| (C++17) |
销毁一个范围中的对象 (函数模板) |
| (C++17) |
销毁范围中一定数量的对象 (函数模板) |
C 库 | |
| 定义于头文件 | |
| 对未指定类型的元素的一个范围进行排序 (函数) | |
| 在未指定类型的数组中搜索元素 (函数) | |