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 | swap_ranges函数用于交换两个范围的值。 |
iter_swap | iter_swap函数用于交换两个迭代器所指向的值。 |
transform | transform函数用于对一个范围内的所有值进行转换。 |
replace | replace函数用于用特定的值替换范围内的值。 |
replace_if | replace_if函数用于满足特定条件时替换范围内的值。 |
replace_copy | 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 | 该函数检查范围何时不再为堆。 |
最小/最大值
Function | Description |
---|---|
min | Returns the smallest element of the range. | max | 返回范围中的最大元素。 |
minmax | 返回范围中最小和最大的元素。 |
min_element | 返回范围中最小的元素。 |
max_element | 返回范围中的最大元素。 |
minmax_element | 返回范围中最小和最大的元素。 |
其他函数
功能 | 描述 |
---|---|
lexicographical_comapre | 该函数执行词法小于比较。 | next_permutation | 该函数用于将范围转换为下一个排列。 |
perv_permutation | 该函数用于将范围转换为前一个排列。 |