1 merge 歸併 將兩個陣列合併成乙個(有序)
merge(iarray1,iarray+len1,iarray2,iarray2+len2,result); 公升序
merge(iarray1,iarray+len1,iarray2,iarray2+len2,result,greater()); 降序
2 reverse 元素反向
reverse(iarray,iarray+len1);
3 reverse_copy 元素反向複製
reverse(iarray,iarray+len,iarray_new); 複製到新的陣列中
3 unique 剔除連續重複元素 ,剔除後元素的個數並不會減少,只是,後面的元素複製過來覆蓋的前面被剔除的,如下面的例子
如果之前是
result=unique(v.begin()) ;
for_each(v.begin(),v.end(),print); 列印出來將是 後面的元素依舊會存在
for_each(v.begin(),result,print) 列印出來將是
4 最小元素 min_element 返回[first,last) 中最小的元素
5 最大元素 max_element 返回[first,last) 中最大的元素
6 for_each(v.begin(),v.end(),print) [v.begin(),v.end()) 裡的每乙個元素 都執行一次 print函式
7 查詢容器元素 find
在迭代器區間[first,last)之間查詢 元素值等於 value的 如果找到則返回 迭代器i 否則返回 last
result=find(v.begin(),v.end(),value);
8 條件查詢容器元素 find_if
檢查區間的每乙個元素,如果滿足謂詞 pred(*i)==true 則返回 i;
find_if(v.begin(),v.end(),pred) pred為謂詞判斷函式
9 統計等於某值的容器元素個數 count
num=(v.begin(),v.end(),value) 返回 等於value的個數
10條件統計容器元素個數 count_if
num=(v.begin(),v.end(),pred) 返回滿足 謂詞pred判斷的個數
11子串行搜尋 search 若找到,則返回迭代器的值,否則返回last
iterlocation=search(first1,last1,first2,last2)
12區間元素交換 swap_rangs
swap_rangs(first1,last1,first2) 只要知道第二個的首位址就ok了,
13替換 replace
replace(first,last,oldvalue,newvalue)
14條件替換 replace_if
replace_if(first,last,odd,new) odd 條件替換函式
15移除 remove
result=remove(first,last,value) 為什麼要返回迭代器result呢,因為實際上只是將不等於value的元素複製到了[first,result)區間
而 [result,last)區間的元素依然不變
16條件移除 remove_if
同上,只是加了乙個謂詞判斷
STL中常用的一些演算法函式 持續更新
1 merge 歸併 將兩個陣列合併成乙個 有序 merge iarray1,iarray len1,iarray2,iarray2 len2,result 公升序 merge iarray1,iarray len1,iarray2,iarray2 len2,result,greater 降序 2 ...
python dict中常用的一些函式
dic1 dic2 dic1.update dic2 update dict dic1呼叫update傳入dic2,如果dic2中的內容在dic1中不存在,那麼直接加入新的價值對到dic1中 如果dic2中的鍵在dic1中已經出現了,那麼就將dic2中鍵所對應的值去覆蓋dic1中的鍵的值 items...
STL的演算法中,一些很簡練的演算法 持續更新
在序列1中尋找序列2第一次出現的位置在 sgi stl 中採用了以第乙個序列中的每乙個元素作為標誌的方法向後匹配,直到匹配到第二個序列完整出現。假設第乙個序列的長度為n,第二個序列的長度為m,在最壞的情況下,該演算法的複雜度為 o n m m 該演算法的亮點在於寫得特別簡介明了。具體 如下 temp...