把vector裡面的數字都乘以2
#include #include #include using namespace std;
int main()
; transform(begin(xs), end(xs), begin(xs), (int x) );
return 0;
}
transform
的第三個引數也可以是別的容器的某個位置,如果你確保目標容器有足夠的位置的話,transform
還能一邊執行你的函式一邊複製。
把vector的奇數複製到另乙個vector
#include #include #include #include using namespace std;
int main()
; vectorys;
copy_if(begin(xs), end(xs), back_inserter(ys), (int x) );
return 0;
}
copy_if
還有很多類似的辦法,可以不要條件,還可以控制方向等等。
把vector的所有奇數放在前面,偶數放在後面
#include
#include
using namespace std;
intmain()
;partition
(begin
(xs)
,end
(xs),[
](int x));
return0;
}
partition
函式把所有 lambda 表示式返回true
的都放在了前面,然後它會返回給你乙個 iterator,指向擺放好之後第乙個false
的元素的位置。需要注意的是,儘管xs
一開始是有順序的,但是partition
一下之後,順序是不保證的。
把vector的所有字串使用空格連線在一起
#include
#include
#include
#include
using namespace std;
intmain()
; cout <<
accumulate
(begin
(xs)
,end
(xs)
,string()
,(const string& a,
const string& b)
)<<
"!"<< endl;
return0;
}
這個程式會輸出i am a c++ programmer!
。別看accumulate
是從
來的,但是既然是通用演算法,就沒有任何理由不能用在字串上面。當然正常的用法是:
這樣的東西。我們給的 lambda 表示式自然也要符合這個規律。accumulate
的第三個引數是乙個空字串,然後我們使用 lambda 表示式保證了,任何字串跟這個空字串弄在一起不會變化。
文件參考
以上來自計蒜客 ?
C語言常用演算法回顧
c語言三個數從小到大排序 輸出 任意輸入 3 個整數,程式設計實現對這 3 個整數由小到大進行排序。實現過程 1 定義資料型別,本例項中 a b c t 均為基本整型。2 使用輸入函式獲得任意 3 個值賦給 a b c。3 使用 if 語句進行條件判斷,如果 a 大於 b,則借助於中間變數 t 互換...
STL常用演算法
stl常用演算法 1 sort sort v.begin v.end 2 unique auto end unique unique begin vec1 end vec1 去掉連續重複的元素。vec1.erase end unique,vec1.end 3 string相關的操作 char c a...
STL常用演算法
include include include include include include include include 一些算術演算法中需要stl中常用的遍歷演算法 for each,transform void show int n int show1 int n int main stl...