STL算法小結

變更性算法
---------------------------------------------------------
名稱             效果

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類似,但保持符合準則與不符合準則的各個元素之間的相對位置dom

 

名稱             做用
----------------------------------------
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 ------- 採用mergesortorm

數值算法
---------------------------------------------------
名字                  功能

accumulate          組合全部元素(求總和,總乘積 ....)

inner_product       組合兩區間內的全部元素

adjacent_difference  將每一個元素和前一元素組合

partial_sum          將每一個元素和其先前的全部元素組合排序

 

移除性算法
------------------------------------------
名稱                   效果
remove            將等於某個特定值的元素所有移除
remove_if         將知足某個準則的元素所有移除
remove_copy       將不等於某個特定值的元素所有複製到它處
remove_copy_if    將不知足某個準則的元素所有複製到它處
unique            移除毗鄰的重複元素
unique_copy       移除毗鄰的重複元素,並重復到它處


移除算法只是邏輯上移除元素,手段是:將不須要移除的元素向前覆蓋應被移除的元素。所以它並不改變
操做區間內的元素個數,而是返回邏輯上新的終點位置。

element

已序區間算法
---------------------------------------------
名稱                         效果

binary_serach            判斷某區間內是否包含某個元素
includes                 判斷某區間內的每一個元素是否都涵蓋於另外一個區間中
lower_bound              搜尋第一個大於等於給定值的元素
upper_bound              搜尋第一個大於給定值的元素
equal_range              返回等於給定值的全部元素的區間
merge                    將兩個區間的元素合併
set_union                求兩個區間的並集
set_intersection         求兩個區間的交集
set_difference           求位於第一區間但不位於第二區間的全部元素,造成一個已序區間
set_symmetric_difference 找出只出現於兩區間之一的全部元素,造成一個已序區間
inplace_merge            將兩個連續的已序區間合併

rem

相關文章
相關標籤/搜索