C++算法函数
库定义了许多特别适用于一次处理大量元素或一段范围的函数。现在让我们直接看看这些函数。
非修改序列操作:
| 函数 | 描述 |
|---|
| all_of | 将条件应用于范围中的所有元素。 |
| any_of | 将条件应用于范围中的某些或任何元素。 |
| none_of | 检查是否没有元素符合条件。 |
| for_each | 将操作应用于范围中的所有元素。 |
| find | 在范围中查找值。 |
| find_if | 在范围中查找元素。 |
| find_if_not | 以与上述函数相反的方式在范围中查找元素。 |
| find_end | 返回范围中最后一个元素。 |
| find_first_of | 查找满足条件并首次出现的元素。 |
| adjacent_find | 在范围中搜索相等且相邻的元素。 |
| count | 返回范围中值的计数。 |
| count_if | 返回满足条件的值的计数。 |
| mismatch | 返回序列中第一个不匹配的值。 |
| equal | 检查两个范围的所有元素是否相等。 |
| is_permutation | 检查参考范围是否是其他范围的排列。 |
| search | 在范围中搜索子序列。 |
| search_n | 在范围中搜索元素的出现次数。 |
修改序列操作
| 函数 | 描述 |
|---|
| copy | 复制元素的范围。 |
| copy_n | 复制范围中的n个元素。 |
| copy_if | 仅当满足特定条件时,复制范围的元素。 |
| copy_backward | 以逆序复制元素。 |
| move | 移动元素的范围。 |
| move_backward | 以逆序移动元素的范围。 |
| swap | 交换两个对象的值。 |
| swap_ranges | 交换两个范围的值。 |
| iter_swap | 交换两个迭代器引用的值。 |
| transform | 转换范围中的所有值。 |
| replace | 用特定值替换范围中的值。 |
| replace_if | 仅当满足特定条件时,替换范围的值。 |
| replace_copy | 通过替换元素复制范围的值。 |
| replace_copy_if | 仅当满足特定条件时,通过替换元素复制范围的值。 |
| fill | 用值填充范围中的元素。 |
| fill_n | 填充序列中的值。 |
| generate | 用于生成范围的值。 |
| generate_n | 用于生成序列的值。 |
| remove | 从范围中移除值。 |
| remove_if | 仅当满足条件时,移除范围中的值。 |
| remove_copy | 通过移除元素复制范围的值。 |
| remove_copy_if | 仅当满足条件时,通过移除元素复制范围的值。 |
| unique | 识别范围中的唯一元素。 |
| unique_copy | 复制范围中的唯一元素。 |
| reverse | 反转范围。 |
| reverse_copy | 通过反转值复制范围。 |
| rotate | 将范围的元素向左旋转。 |
| rotate_copy | 通过左旋转复制范围的元素。 |
| random_shuffle | 随机打乱范围。 |
| shuffle | 借助生成器随机打乱范围。 |
分区
| 函数 | 描述 |
|---|
| is_partitioned | 用于确定范围是否已分区。 |
| partition | 用于分区范围。 |
| stable_partition | 将范围分为两个稳定的半段。 |
| partition_copy | 分区后复制范围。 |
| partition_point | 返回范围的分区点。 |
排序
| 函数 | 描述 |
|---|
| sort | 对范围中的所有元素进行排序。 |
| stable_sort | 对范围中的元素进行排序,保持相对等价的顺序。 |
| partial_sort | 部分排序范围中的元素。 |
| partial_sort_copy | 排序后复制范围中的元素。 |
| is_sorted | 检查范围是否已排序。 |
| is_sorted_until | 检查范围排序到哪个位置。 |
| nth_element | 对范围中的元素进行排序。 |
二分搜索
| 函数 | 描述 |
|---|
| lower_bound | 返回范围的下界元素。 |
| upper_bound | 返回范围的上界元素。 |
| equal_range | 返回等于给定元素的子范围。 |
| binary_search | 检查范围中的值是否存在于已排序序列中。 |
合并
| 函数 | 描述 |
|---|
| merge | 合并已排序的两个范围。 |
| inplace_merge | 合并已排序的两个连续范围。 |
| includes | 搜索已排序的范围是否包含另一个范围。 |
| set_union | 返回已排序的两个范围的并集。 |
| set_intersection | 返回已排序的两个范围的交集。 |
| set_difference | 返回已排序的两个范围的差集。 |
| set_symmetric_difference | 返回已排序的两个范围的对称差集。 |
堆
| 函数 | 描述 |
|---|
| push_heap | 将新元素推入堆中。 |
| pop_heap | 从堆中弹出元素。 |
| make_heap | 创建堆。 |
| sort_heap | 对堆进行排序。 |
| is_heap | 检查范围是否为堆。 |
| is_heap_until | 检查范围到哪个位置为堆。 |
最小/最大值
| 函数 | 描述 |
|---|
| min | 返回范围中的最小元素。 |
| max | 返回范围中的最大元素。 |
| minmax | 返回范围中的最小和最大元素。 |
| min_element | 返回范围中的最小元素。 |
| max_element | 返回范围中的最大元素。 |
| minmax_element | 返回范围中的最小和最大元素。 |
其他函数
| 函数 | 描述 |
|---|
| lexicographical_comapre | 执行词典顺序的小于比较。 |
| next_permutation | 将范围转换为下一个排列。 |
| perv_permutation | 将范围转换为前一个排列。 |
标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想