1、不改变序列的操作:all_of() // 序列上所有元素全部都是...any_of() // 序列上所有元素存在一个是...none_of() // 序列上所有元素没有一个是...
count(first, last, elem) // 对序列(指定元素)计数find(first, last, elem)/find_if() // 查找序列中的一个元素 _if// 可自定义查找条件search() // 查找序列中的一段子序列
adjacent_find(first, last) // 在序列中查找第一个挨在一起的两个值相同的指定元素
--------------------------------------------------------------------------------------------2、改变序列的操作:copy(first, last, out)/copy_if() // 复制copy_bcakward()copy_n()
move(first, last, out) / move_backward() // 取得整个序列的最右引用
fill(first, last, num) / fill_n() // 类似memset,填充序列元素
generate(first, last, fun) // 类似fill,使用一盒函数往序列中填充元素generate_n()
remove(first, last, elem)/remoce_if() // 将要删除的元素移动到序列尾
replace()/replace_if()replace_copy()/ replace_copy_if()
reverse()/ reverse_copy() // 反转序列
rotate()/rotate_copy() // 在序列中交换其中两部分的顺序
unique(first, last)/ unique_copy() // 删除序列中连续重复的元素(即把冗余的元素移动到序列尾)
swap()/ iter_swap()/swap_ranges(first, last, out) // 交换两个序列的内容
iota(first, last, num) // 在一段区间上填上递增的数字
transform(first, last, out, fun) //对序列中的每个元素都执行函数fun,(可以对序列本身没有影响,也可以改变序列本身)
for_each(first, last, fun) // 类似transform,它是在本序列上进行操作,灵活性小
shuffle() // 随机打乱序列中元素的顺序
sample() // 从序列中随机挑选n个元素出来组成新的序列,每个元素只会被选择一次,如果n大于序列的长度,那么整个序列都会被选出来。
---------------------------------------------------------------------------------------------3、划分操作:partition() //
stable_partition() // 划分的时候可以保持序列之前的相对顺序
is_partiontioned()
partition_copy()
partition_point()
---------------------------------------------------------------------------------------------4、排序操作:sort()
stable_sort()
partial_sort / partial_sort_copy() // 对序列前半部分进行排序
nth_element() // 这个算法保证第n个位置上的元素一定是有序的,然后以这个位置为界限,右边的每一个元素都大于左边的每一个元素。类似快排的思想
is_sorted()
is_sorted_until()
---------------------------------------------------------------------------------------------4、二分操作:lower_bound()upper_bound()
binary_search()equal_range()
---------------------------------------------------------------------------------------------5、合并操作:merge() // 有序区间的合并,而merge通常用来把不同有序序列合并,因此需要一个容器来放结果。inplace_merge() // 两者的区别就在于inplace_merge可以在就地进行(一个序列,前半部分和后部分分别有序)而不用借助额外的空间,
---------------------------------------------------------------------------------------------6、比较操作:equal() // 判断两个序列是否完全相同
lexicographical_compare() // 判断两个序列字典序
mismatch() // 判断找出两个序列第一个不同的地方
---------------------------------------------------------------------------------------------7、集合操作:set_difference()
set_union()
set_intersection()
set_symmetric_differences()
includes()
merge()
---------------------------------------------------------------------------------------------8、对操作:make_heap() // 把一串序列调整成最大堆的数组形式
push_heap()
pop_heap()
sort_heap()
is_heap() / is_heap_until() // 判断序列是否为最大堆以及在序列中找到一个最大的最大堆(以序列头为堆顶)
---------------------------------------------------------------------------------------------9、最大最小操作:min_element / max_element / min_max_element // 返回序列中最小(最大)值的位置
min / max / minmax // 返回两者中较小(较大)的那个值
clamp() // 给定一个区间,一个元素,它返回这个区间最靠近这个元素的值。
10、排列操作:next_permutation()
prev_permutation()
is_permutation()
---------------------------------------------------------------------------------------------11、数值操作:accumulate()
partial_sum() // 求前缀和,生成前缀和序列。
inner_product()
adjacent_difference()
reduce()
transform_reduce()
inclusive_scan()
exclusive_scan()
transform_inclusive_scan()
transform_exclusive_scan()
gcd() // 最大公约数
lcm() // 最小公倍数
---------------------------------------------------------------------------------------------12、未初始化内存上的操作:
uninitialized_copy()
uninitialized_copy_n()
uninitialized_fill() / uninitialized_fill_n()
uninitialized_move() / uninitialized_move_n(这个及以下都是C++17的算法)
uninitialized_default_construct() / uninitialized_default_construct_n()uninitialized_value_construct / uninitialized_value_construct_ndestroy() destroy_at / destroy_n
---------------------------------------------------------------------------------------------
转载于:https://www.cnblogs.com/shuang0109/p/9828959.html
相关资源:数据结构—成绩单生成器