C++ STL 算法介绍

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

下面我们直接看一下这些函数的功能介绍。 :eyes:

不修改序列操作

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 将范围转换为先前的排列。

Leave a Reply