c 回顧 STL 常用演算法

2021-09-25 08:56:04 字數 1649 閱讀 7869

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