1. 不修改序列的操作
all_of: 判斷是否所有元素都滿足某條件
any_of: 判斷是否存在一個以上元素滿足某條件
none_of: 判斷是否任何一個元素都不滿足某條件
for_each: 對于每一個元素, 執(zhí)行某函數(shù)
count: 判斷等于某個值的元素數(shù)量
count_if: 計算滿足某條件的元素數(shù)量
mismatch: 找到兩個序列中第一個值不同的位置
equal: 判斷兩個序列是否相等(第二個允許一部分來比較)
找到第一個滿足條件的元素
find: 找到等于某個值的
find_if: 找到滿足某條件的
find_if_not: 找到不滿足某條件的
find_end: 找到最后一個子串
find_first_of: 找到第一個子串
adjacent_find: 找到第一個等值元素組成的子串
search: 找到一個子串第一次出現(xiàn)的地方
search_n: 查找長度為n的等值串的數(shù)量
2. 修改序列的操作
copy: 拷貝序列
copy_if: 拷貝符合某條件的
copy_n: 拷貝n個元素
copy_backward: 拷貝一個列表到某個位置, 不是往后, 是往前;
move: 將一個序列里的元素移動到其他位置, 移動后原序列是有效值, 但可能變了
move_backward: 移動元素, 從后往前
fill: 都設(shè)置為某個值
fill_n: 將前n個元素設(shè)置為某個值
transform: 將一個range里的元素, 用某個函數(shù)進行修改后, 放到另一個位置去
generate: 將一個序列里的元素, 用生成器賦值;
generate_n: 用函數(shù)生成前n個
remove: 把要刪除的等于某個值的元素, 集合成一個range, 放到序列的尾部
remove_if: 刪除符合某個條件的, 也只是移動, 不真正刪除;
remove_copy: 將除了要刪除的等于某個值的元素之外, 復(fù)制到另一個位置;
remove_copy_if: 將除了要刪除的符合某個條件的元素之外, 復(fù)制到另一個位置;
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: 將不唯一的元素唯一化, 刪除多余的重復(fù)元素
unique_copy: 先拷貝再唯一化
3. 劃分操作
is_partitioned: 是否已經(jīng)按照某規(guī)則進行和劃分
partition: 按照某種規(guī)則, 將序列分成兩部分(比如前半部分偶數(shù), 后半部分奇數(shù))
partition_copy: 拷貝并劃分
stable_partition: 劃分, 并且保持原來元素的相對位置(是穩(wěn)定的)
partition_point: 找到劃分點
4. 排序操作
is_sorted: 序列是否增序排序
is_sorted_until: 找到未排序的第一個元素(123452中的2)
sort: 對一個range進行排序
partial_sort: 對前n個元素排序
partial_sort_copy: 拷貝前n個元素并進行排序
stable_sort: 穩(wěn)定排序
nth_element: 把第n個位置上的元素, 設(shè)置為排序后應(yīng)該是的元素(比如找到排序后第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: 生成一個大頭堆, 線性復(fù)雜度
push_heap: 將一個數(shù)壓入棧中, 對數(shù)復(fù)雜度
pop_heap: 出棧, 對數(shù)復(fù)雜度
sort_heap: 將一個堆轉(zhuǎn)換為升序列表, n*log(n)復(fù)雜度
8. 最小值/最大值操作
max: 找出最大元素, 根據(jù)輸入?yún)?shù)不同, 通常是常量復(fù)雜度, 但是對于列表是線性
max_element: 在range里找出最大的元素, 線性復(fù)雜度
min: 返回兩個元素中較小的, 或者列表中最小的;
min_element: 找出range里面最小的元素;
lexicographical_compare: 按照字典序比較兩個range的大小;
is_permutation: 判斷一個range里面是否有子range和另一個range在組合上是等價的
next_permutation: 生成另一個字典序比現(xiàn)在大的排序
prev_permutation: 生成另一個字典序比現(xiàn)在小的排序
9. 數(shù)字操作
itoa: 為一個range生成遞增的值
accumulate: 累計一個range里面的值
inner_product: 計算兩個range的內(nèi)積(類似矩陣相乘)
adjacent_difference: 生成毗鄰相加的序列(1,1,2,3,5,...)
partial_sum: 生成遞增序列(2,4,6,8,...)
10. C庫
qsort: 對數(shù)組中的元素進行排序
bsearch: 二分搜索法