1. 不修改序列的操作
all_of: 判断是否所有元素都满足某条件
any_of: 判断是否存在一个以上元素满足某条件
none_of: 判断是否任何一个元素都不满足某条件
for_each: 对于每一个元素, 执行某函数
count: 判断等于某个值的元素数量
count_if: 计算满足某条件的元素数量
mismatch: 找到两个序列中第一个值不同的位置
equal: 判断两个序列是否相等(第二个允许一部分来比较)
找到第一个满足条件的元素
find: 找到等于某个值的
find_if: 找到满足某条件的
find_if_not: 找到不满足某条件的
find_end: 找到最后一个子串
find_first_of: 找到第一个子串
adjacent_find: 找到第一个等值元素组成的子串
search: 找到一个子串第一次出现的地方
search_n: 查找长度为n的等值串的数量
2. 修改序列的操作
copy: 拷贝序列
copy_if: 拷贝符合某条件的
copy_n: 拷贝n个元素
copy_backward: 拷贝一个列表到某个位置, 不是往后, 是往前;
move: 将一个序列里的元素移动到其他位置, 移动后原序列是有效值, 但可能变了
move_backward: 移动元素, 从后往前
fill: 都设置为某个值
fill_n: 将前n个元素设置为某个值
transform: 将一个range里的元素, 用某个函数进行修改后, 放到另一个位置去
generate: 将一个序列里的元素, 用生成器赋值;
generate_n: 用函数生成前n个
remove: 把要删除的等于某个值的元素, 集合成一个range, 放到序列的尾部
remove_if: 删除符合某个条件的, 也只是移动, 不真正删除;
remove_copy: 将除了要删除的等于某个值的元素之外, 复制到另一个位置;
remove_copy_if: 将除了要删除的符合某个条件的元素之外, 复制到另一个位置;
replace: 将等于某个值的所有元素都替换为另一个元素;
replace_if: 将符合某个条件的所有元素都替换为另一个元素;
replace_copy: 拷贝和 替换一起做, 替换的是等于某个值的
replace_copy_if: 拷贝和替换一起做, 替换的是符合某个条件的
swap: 交换两个对象的值
swap_ranges: 交换两个range
iter_swap: 交换两个迭代器指向的元素的值
swap_ranges: 交换两个ranges里面的元素
reverse: 对range里面的元素反序
reverse_copy: 先拷贝再反序
rotate: 把range里面的两段对换
rotate_copy: 先拷贝再对换
shuffle: 打乱元素位置
random_shuffle: 随机打乱位置
unique: 将不唯一的元素唯一化, 删除多余的重复元素
unique_copy: 先拷贝再唯一化
3. 划分操作
is_partitioned: 是否已经按照某规则进行和划分
partition: 按照某种规则, 将序列分成两部分(比如前半部分偶数, 后半部分奇数)
partition_copy: 拷贝并划分
stable_partition: 划分, 并且保持原来元素的相对位置(是稳定的)
partition_point: 找到划分点
4. 排序操作
is_sorted: 序列是否增序排序
is_sorted_until: 找到未排序的第一个元素(123452中的2)
sort: 对一个range进行排序
partial_sort: 对前n个元素排序
partial_sort_copy: 拷贝前n个元素并进行排序
stable_sort: 稳定排序
nth_element: 把第n个位置上的元素, 设置为排序后应该是的元素(比如找到排序后第5个元素)
5. 二分法搜索操作(Binary Search)
都是在排好顺序的列表上操作
lower_bound: 找出第一个不小于给定元素的元素
upper_bound: 找出第一个不大于给定元素的元素
binary_search: 判断一个元素是否在该序列中
equal_range: 找出等于某元素的子range
6. 集合操作(对于有序)
merge: 合并
inplace_merge: 就地合并
includes: 判断一个range是否包含另一个range
set_difference: 计算两个集合中不同的部分中的第一个集合里的元素(a-b)
set_symmetric_difference: 找出集合的异
set_union: 找出集合的合集
7. 堆操作
is_heap: 给定的range是否大头堆
is_heap_until: 找到range里面满足大头堆的最大的子range
make_heap: 生成一个大头堆, 线性复杂度
push_heap: 将一个数压入栈中, 对数复杂度
pop_heap: 出栈, 对数复杂度
sort_heap: 将一个堆转换为升序列表, n*log(n)复杂度
8. 最小值/最大值操作
max: 找出最大元素, 根据输入参数不同, 通常是常量复杂度, 但是对于列表是线性
max_element: 在range里找出最大的元素, 线性复杂度
min: 返回两个元素中较小的, 或者列表中最小的;
min_element: 找出range里面最小的元素;
lexicographical_compare: 按照字典序比较两个range的大小;
is_permutation: 判断一个range里面是否有子range和另一个range在组合上是等价的
next_permutation: 生成另一个字典序比现在大的排序
prev_permutation: 生成另一个字典序比现在小的排序
9. 数字操作
itoa: 为一个range生成递增的值
accumulate: 累计一个range里面的值
inner_product: 计算两个range的内积(类似矩阵相乘)
adjacent_difference: 生成毗邻相加的序列(1,1,2,3,5,...)
partial_sum: 生成递增序列(2,4,6,8,...)
10. C库
qsort: 对数组中的元素进行排序
bsearch: 二分搜索法