🎺Algorithm
演算法
在STL中除了提供容器(類別樣板), 尚提供演算法(函式 樣板)以供操作之資料
需 include <algorithm>
常用演算法:
find
count
search
merge
sort
for_each
transform
upper_bound
lower_bound
find
用法 :
find(first, last, val)
[first]: iterator
[last]: iterator
[val]: target value type
[回傳值]: iterator
針對某個container做搜尋,區間由first及last這兩個iterator指定,目標值為val,找到後回傳其所在元素指標(也是以iterator表示),也就是尋找元素在容器中第一個出現的位子。
陣列搜尋
vector搜尋
count
count(first, last, val)
[first]: iterator
[last]: iterator
[val]: target value type
[回傳值]: int
針對某個container做搜尋,區間由first及last這兩個iterator指定,目標值為val,回傳container中元素值為val的個數,也就是統計在容器中共有幾個「指定的元素」。
search
search(s_first , s_last , t_first , t_last)
[s_first] [t_first] : iterator
[s_last] [t_last] : iterator
[回傳值] : iterator
找尋某一資料序列是否出現在另一個容器中。
範例 : list容器中做搜尋
merge
merge(s1_first, s1_last, s2_first, s2_last, t_first)
[s1_first] [s2_first]: iterator
[s1_last] [s2_last]: iterator
[t_first] : iterator
[回傳值] : iterator
合併s1與s2兩資料於t
sort
sort(first, last)
sort(first, last, f)
[first]: iterator
[last]: iterator
[f]: 函式 (可有可無)
[回傳值]: void
資料排序 (預設由小到大)
for_each
for_each(first, last, f)
[first] : iterator
[last] : iterator
[f] : 函式
[回傳值] : 函數物件指標
對container中從first 所指的元素起到last為止,其間每一個元素做某個動作(由函數f指定)
transform
transform(first, last, output, f)
[first] : iterator
[last] : iterator
[output] : container
[f] : 函式
[回傳值] : 函數物件指標
同for_each,但會把結果放在output容器中
upper_bound & lower_bound
首先,使用的前提是排好序的非遞減陣列。lower_bound( )和upper_bound( )都是利用二分查詢的方法在一個排好序的陣列、容器中進行查詢的。
lower_bound( begin,end,num):從陣列的begin位置到end-1位置二分查詢第一個大於或等於num的數字,找到返回該數字的地址,不存在則返回end。通過返回的地址減去起始地址begin,得到找到數字在陣列中的下標。
upper_bound( begin,end,num):從陣列的begin位置到end-1位置二分查詢第一個大於num的數字,找到返回該數字的地址,不存在則返回end。通過返回的地址減去起始地址begin,得到找到數字在陣列中的下標。
Last updated
Was this helpful?