標籤:
變動性演算法
---------------------------------------------------------
名稱 效果
for_each 針對每個元素執行某項操作
copy 從第一個元素開始,複製某段區間
copy_backward 從最後一個元素開始,複製某段區間
transform 變動(並複製)元素,將兩個區間的元素合并
merge 合并兩區間內的元素
swap_ranges 交換兩區間內的元素
fill 以給定值替換每一個元素
fill_n 以給定值替換n個元素
generate 以某項操作的結果替換每一個元素
generate_n 以某項操作的結果替換n個元素
replace 將具有某特定值的元素替換為另外一個值
replace_if 將符合某準則的元素替換為另外一個值
replace_copy 複製整個區間,同時將具有某特定值的元素替換為另一個值
replace_copy_if 複製整個區間,同時將符合某個準則的元素替換為另外一個值
變序性演算法
------------------------------------------------
名稱 效果
reverse 將元素的次序逆轉
reverse_copy 複製的同時,逆序元素順序
rotate 旋轉元素次序
rotate_copy 複製的同時,旋轉元素次序
next_permutation 得到元素的下一個排序次序
prev_permutation 得到元素的上一個排列次序
random_shuffle 將元素的次序隨機打亂
partition 改變元素次序,使得符合某準則者移到前面
stable_partition 與partition相似,但保持符合準則與不符合準則的各個元素之間的相對位置
名稱 作用
----------------------------------------
for_each 對每個元素執行某個操作
count 返回元素個數
count_if 返回滿足某一準則的元素個數
min_element() 返回最小值元素
max_element() 返回最大值元素
find 搜尋等於某值的第一個元素
find_if 搜尋滿足某個準則的第一個元素
search_n 搜尋具有某個特性的第一段"n個連續元素"
serach 搜尋某個子區間第一次出現的位置
find_end 搜尋某個子區間最後一次出現位置
find_first_of 搜尋等於某個值之一的第一個元素
adjacent_find 搜尋連續兩個相等的元素
equal 判斷兩個區間是否相等
mismatch 判斷兩區間是否相等
lexicographical
_compare 是否小於另一個序列
string搜尋函數和STL搜尋演算法的比較
搜尋 string函數 STL演算法
-------------------------------------------------------------------------------
某元素第一次出現位置 find() find()
某元素最後一次出現位置 rfind() find() 採用逆向迭代器
某子區間第一次出現位置 find() serach()
某子區間最後一次出現位置 rfind() find_end()
某數個元素第一次出現位置 find_first_of() find_first_of()
某數個元素最後一次出現位置 find_last_of() first_first_of() 採用逆向迭代器
n個連續元素第一次出現位置 serach_n()
排序演算法
----------------------------------------
名稱 效果
sort 對所有元素排序
stable_sort 對所有元素排序,並保持相等元素間的相對次序
partial_sort 排序,直到前n個元素就位
partial_sort_copy 排序,直到前n個元素就位,結果複製於它處
nth_element 根據第n個位置進行排序
partiton 改變元素次序,使得符合某準則的元素放在前面
stable_partition 與partition相同,但保持符合準則和不符合準則的各個元素之間的相對位置
make_heap 將一個區間轉換為一個heap
push_heap 將一個元素加入到heap
pop_heap 從heap移除一個元素
sort_heap 對heap進行排序,執行後就不再是一個heap了
sort ----------內部採用快速排序
partial_sort ------- 採用heapsort演算法
stable_sort ------- 採用mergesort
數值演算法
---------------------------------------------------
名字 功能
accumulate 組合所有元素(求總和,總乘積 ....)
inner_product 組合兩區間內的所有元素
adjacent_difference 將每個元素和前一元素組合
partial_sum 將每個元素和其先前的所有元素組合
移除性演算法
------------------------------------------
名稱 效果
remove 將等於某個特定值的元素全部移除
remove_if 將滿足某個準則的元素全部移除
remove_copy 將不等於某個特定值的元素全部複製到它處
remove_copy_if 將不滿足某個準則的元素全部複製到它處
unique 移除毗鄰的重複元素
unique_copy 移除毗鄰的重複元素,並重複到它處
移除演算法只是邏輯上移除元素,手段是:將不需要移除的元素向前覆蓋應被移除的元素。因此它並不改變
操作區間內的元素個數,而是返回邏輯上新的終點位置。
已序區間演算法
---------------------------------------------
名稱 效果
binary_serach 判斷某區間內是否包含某個元素
includes 判斷某區間內的每個元素是否都涵蓋於另一個區間中
lower_bound 搜尋第一個大於等於給定值的元素
upper_bound 搜尋第一個大於給定值的元素
equal_range 返回等於給定值的所有元素的區間
merge 將兩個區間的元素合并
set_union 求兩個區間的並集
set_intersection 求兩個區間的交集
set_difference 求位於第一區間但不位於第二區間的所有元素,形成一個已序區間
set_symmetric_difference 找出只出現於兩區間之一的所有元素,形成一個已序區間
inplace_merge 將兩個連續的已序區間合并
STL演算法小結