remove_if使用方法:
int a = ;
vectorarr(a, a + 14);
std::remove_if(arr.begin(), arr.end(), std::bind2nd(std::less(), 100));
for (int i = 0; i < arr.size(); ++i)
輸出結果為:
240
100200
300102
555100
200300556
102555
90
陣列arr是有序陣列,remove_if()會複製所有不滿足條件(less函式物件返回值為假)的元素到原陣列的起始位置並覆蓋之前的元素。返回不滿足條件的元素與滿足條件的元素分隔線處的迭代器。
因此,remove_if()配合erase使用能達到刪除指定元素的效果。
int a = ;
vectorarr(a, a + 9);
arr.erase(std::remove_if(arr.begin(), arr.end(), std::bind2nd(std::less(), 100)), arr.end());
for (int i = 0; i < arr.size(); ++i)
輸出結果為:
100
200300
另外,bind2nd(const operation& op, const t& x)中的第乙個引數op是乙個binary function object。binary function object op接受兩個引數,bind2nd()繫結op的第二個引數為x。功能相似的函式還有bind1st。相關的介紹詳見: C STL 學習筆記
一 stl a include include using namespace std 1 void sort iterator start,iterator end void sort iterator start,iterator end,strictweakordering cmp cmp 函...
C STL學習筆記
stl是個寶 由於c stl的開放,代替了那些需要老老實實寫結構體來實現堆疊二叉樹等資料結構的c等語言,很多演算法不需要自己來實現了 所有容器都有的兩個時間複雜度為o 1 的方法 a.size 返回容器中元素的個數 a.empty 返回容器是否為空 vector也叫變長陣列,即陣列長度可以動態變化。...
C STL學習筆記 1
本文面向的讀者 學習過c 程式語言 也就是說學習過template 但是還沒有接觸過stl的stl的初學者。這實際上是學習stl的一篇筆記。什麼是泛型程式設計 我們可以簡單的理解為 使用模板的程式設計就是泛型程式設計。就像我們我們可以簡單的理解物件導向程式設計就是使用虛函式的程式設計一樣。stl是什...