STL中常用的一些演算法函式 持續更新

2021-05-22 17:30:34 字數 1689 閱讀 7965

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...