C++ 标准库 <algorithm> 文件包含了大量用于处理数据的算法。这些算法可以分为以下几类:
- 查找算法:用于查找序列中特定元素的位置。
- 排序算法:用于对序列中的元素进行排序。
- 修改算法:用于修改序列中的元素。
- 聚合算法:用于对序列中的元素进行聚合操作。
- 迭代算法:用于遍历序列中的元素。
以下是 <algorithm> 文件中包含的全部算法列表:
查找算法
find()
:查找序列中第一个与给定值相等的元素的位置。find_if()
:查找序列中第一个满足给定条件的元素的位置。adjacent_find()
:查找序列中相邻的相同元素。count()
:计算序列中与给定值相等的元素的个数。count_if()
:计算序列中满足给定条件的元素的个数。search()
:查找序列中另一个序列的第一个出现的位置。search_n()
:查找序列中给定值出现的第一个位置,并返回该位置和下一个位置之间的所有元素。mismatch()
:比较两个序列,并返回第一个不相等的元素的位置。equal()
:比较两个序列是否相等。is_sorted()
:判断序列是否已经排序。binary_search()
:在排序后的序列中查找给定值的位置。lower_bound()
:返回第一个大于或等于给定值的元素的迭代器。upper_bound()
:返回第一个大于给定值的元素的迭代器。equal_range()
:返回包含给定值的两个迭代器,一个指向第一个相等的元素,另一个指向下一个相等的元素。
排序算法
sort()
:对序列进行排序。stable_sort()
:对序列进行稳定排序。partial_sort()
:对序列进行部分排序。partial_sort_copy()
:对序列进行部分排序,并将结果复制到另一个序列。nth_element()
:将序列的第 n 个元素放在正确的位置。merge()
:将两个有序序列合并为一个有序序列。inplace_merge()
:在原地将两个有序序列合并为一个有序序列。sort_heap()
:对堆进行排序。make_heap()
:将序列转换为堆。pop_heap()
:从堆中弹出顶部元素。push_heap()
:将元素插入到堆中。sort_by_key()
:根据键对序列进行排序。stable_sort_by_key()
:根据键对序列进行稳定排序。
修改算法
copy()
:复制一个序列。copy_if()
:复制满足给定条件的序列元素。replace()
:将序列中指定的元素替换为另一个元素。replace_if()
:将序列中满足给定条件的元素替换为另一个元素。fill()
:将序列填充为指定值。fill_n()
:将序列的前 n 个元素填充为指定值。transform()
:将序列中的每个元素转换为另一个值。generate()
:将序列中的每个元素生成为一个指定函数的结果。remove()
:从序列中删除指定值的元素。remove_if()
:从序列中删除满足给定条件的元素。unique()
:删除序列中相邻重复的元素。unique_copy()
:将序列中相邻重复的元素复制到另一个序列。swap()
:交换两个序列。reverse()
:反转序列的顺序。rotate()
:将序列旋转指定的元素。random_shuffle()
:对序列进行随机排序。shuffle()
聚合算法
accumulate()
:对序列中的元素进行累加。reduce()
:对序列中的元素进行归约。inner_product()
:计算两个序列的点积。adjacent_difference()
:计算序列中相邻元素的差。partial_sum()
:计算序列中的部分和。iota()
:生成一个从 0 开始的序列。
迭代算法
for_each()
:对序列中的每个元素执行一个指定的操作。transform_reduce()
:将序列中的元素转换为另一个值,并对结果进行归约。for_each_n()
:对序列的前 n 个元素执行一个指定的操作。generate_n()
:生成 n 个元素,并将它们插入到序列中。