STL 分类
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_n
destroy()
destroy_at / destroy_n
---------------------------------------------------------------------------------------------
?
轉載于:https://www.cnblogs.com/shuang0109/p/9828959.html
總結
- 上一篇: 泰国博仁大学CAIC2018年12月就本
- 下一篇: 电解质等渗溶液、高渗溶液、大量不保留灌肠