STL演算法小結

來源:互聯網
上載者:User

標籤:

變動性演算法
---------------------------------------------------------
名稱             效果

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演算法小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.