跳到主要内容

C++ STL 算法介绍

STL 标准模板库 <algorithm> 定义了一组基于算法的函数。这些算法函数可以通过迭代器或指针访问的任何对象序列,例如数组或某些 STL 容器 的实例。但是请注意,算法通过迭代器直接对值进行操作,不会影响容器的结构(它永远不会影响容器的大小或存储分配)。

下面我们直接看一下这些函数的功能介绍。 👀 ​(注:带 🐙 表示 function template)

不修改序列操作

Non-modifying sequence operations

函数说明
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该函数在参数内搜索元素的出现。

修改序列操作

Modifying sequence operations

函数说明
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该函数借助生成器随机调整参数。

分区

Partitions

函数说明
is_partitioned该函数用于推断参数是否已分区。
partition该函数用于划分参数。
stable_partition该函数将参数分为两个稳定的一半。
partition_copy该函数在分区后复制参数。
partition_point该函数返回参数的分区点。

排序

Sorting

函数说明
sort该函数对参数内的所有元素进行排序。
stable_sort该函数在保持相对等效顺序的参数内对元素进行排序。
partial_sort该函数对参数的元素进行部分排序。
partial_sort_copy该函数对参数进行排序后将其复制。
is_sorted该函数检查参数是否已排序。
is_sorted_until函数检查直到参数排序的元素。
nth_element函数对参数内的元素进行排序。

二分搜索

Binary search (operating on partitioned/sorted ranges)

函数说明
lower_bound返回参数的下界元素。
upper_bound返回参数的上限元素。
equal_range该函数返回等于元素的子参数。
binary_search该函数判断参数内的值是否按排序顺序存在。

合并函数

Merge (operating on sorted ranges)

函数说明
merge该函数合并两个已排序的参数。
inplace_merge该函数合并两个已排序的连续参数。
includes该函数搜索排序参数是否包括另一个参数。
set_union该函数返回已排序的两个参数的并集。
set_intersection该函数返回已排序的两个参数的交集。
set_difference该函数返回已排序的两个参数的差。
set_symmetric_difference函数返回已排序的两个参数的对称差。

堆函数

Heap

函数说明
push_heap该函数将新元素压入堆中。
pop_heap该函数在堆中弹出新元素。
make_heap该函数用于创建堆。
sort_heap该函数对堆进行排序。
is_heap该函数检查参数是否为堆。
is_heap_until该函数检查参数直到堆的哪个位置。

最小/最大

Min/max

函数说明
max返回参数的最大元素。
min返回参数的最小元素。
minmax返回参数的最小和最大元素。
min_element返回参数的最小元素。
max_element返回参数的最大元素。
minmax_element返回参数的最小和最大元素。

其他

Other

函数说明
lexicographical_compare字典序小于比较。
next_permutation将范围转换为下一个排列。
prev_permutation将范围转换为先前的排列。