轉接自stl演算法
1.copy() 將乙個區間元素複製到另乙個區間
2.copy_if() 將滿足謂詞pred條件的元素複製到另乙個區間
3.copy_backward() 將區間的元素從最後乙個元素開始複製
4.copy_n() 複製乙個區間的n個元素到另一區間
5 move() 將區間的元素移到另乙個區間
6.move_backward() 將區間元素從最後乙個元素從後向前複製
7.transform() 將區間的元素通過func()的返回值複製到另乙個(或相同)區間
8.merge() 將兩個有序區間歸併到另乙個區間
9.swap_ranges() 交換兩個區間的元素
10.fill() 將區間裡元素以特定值填充
11.fill_n() 從起點開始填充n個特定值
12.generate() 以func操作的結果替換每乙個元素
13.generate_n() 以func操作的結果替換以beg開始的n個元素
14.iota() 將區間元素以value值開始的遞增值替換
15.replace() 將區間裡oldvalue以newvalue替換
16.replace_if() 將區間裡滿足謂詞pred的oldvalue以newvalue替換
17.replace_copy() 將區間複製到另一區間但oldvalue以newvalue代替
18.replace_copy_if() 將區間複製到另一區間但滿足謂詞pred的oldvalue以newvalue代替
#include
#include
#include
#include
#include
#include
using
namespace
std;
// 1.copy() 將乙個區間元素複製到另乙個區間
// 2.copy_if() 將滿足謂詞pred條件的元素複製到另乙個區間
// 3.copy_backward() 將區間的元素從最後乙個元素開始複製
// 4.copy_n() 複製乙個區間的n個元素到另一區間
// 5 move() 將區間的元素移到另乙個區間
// 6.move_backward() 將區間元素從最後乙個元素從後向前複製
// 7.transform() 將區間的元素通過func()的返回值複製到另乙個(或相同)區間
// 8.merge() 將兩個有序區間歸併到另乙個區間
// 9.swap_ranges() 交換兩個區間的元素
// 10.fill() 將區間裡元素以特定值填充
// 11.fill_n() 從起點開始填充n個特定值
// 12.generate() 以func操作的結果替換每乙個元素
// 13.generate_n() 以func操作的結果替換以beg開始的n個元素
// 14.iota() 將區間元素以value值開始的遞增值替換
// 15.replace() 將區間裡oldvalue以newvalue替換
// 16.replace_if() 將區間裡滿足謂詞pred的oldvalue以newvalue替換
// 17.replace_copy() 將區間複製到另一區間但oldvalue以newvalue代替
// 18.replace_copy_if() 將區間複製到另一區間但滿足謂詞pred的oldvalue以newvalue代替
void test()
; //2
copy_if(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, " "), f);
//3vector
a;array
b;copy_backward(a.begin(), a.end(), b.end());
for (auto &v : b)
cout
<< v << ends;
cout
<< endl;
//4copy_n(a.begin(), 3, ostream_iterator(cout, " "));
cout
<< endl;
vector
c;//5
move(a.begin(), a.end(), back_inserter(c));
for (auto &v : c)
cout
<< v << ends;
cout
<< endl;
//6array
d;move_backward(c.begin(), c.end(), d.end());
for (auto &v : d)
cout
<< v << ends;
auto f1 = (int& v)
;//7
transform(d.begin(), d.end(), d.begin(), f1);
cout
<< endl;
for (auto &v : d)
cout
<< v << ends;
//8cout
<< endl;
vector
e;merge(a.begin(), a.end(), b.begin(), b.end(), back_inserter(e));
for (auto &v : e)
cout
<< v << ends;
cout
<< ends;
//9swap_ranges(a.begin(), a.begin() + 3, b.begin() + 3);
for (auto &v : a)
cout
<< v << ends;
//10
fill(a.begin(), a.end(), 3);
cout
<< endl;
for (auto &v : a)
cout
<< v << ends;
//11
fill_n(a.begin(), 3, 2);
cout
<< endl;
for (auto &v : a)
cout
<< v << ends;
auto f2 = [&]()
;cout
<< endl;
//12
generate(a.begin(), a.end(), f2);
for (auto &v : a)
cout
<< v << ends;
//13
generate_n(a.begin(),3,f2);
cout
<< endl;
for (auto &v : a)
cout
<< v << ends;
//14
iota(a.begin(), a.end(), 5);
cout
<< endl;
for (auto &v : a)
cout
<< v << ends;
//15
replace(a.begin(), a.end(), 6, 5);
cout
<< endl;
for (auto &v : a)
cout
<< v << ends;
auto f3 = (const
int& v)
;//16
replace_if(a.begin(), a.end(), f3, 5);
cout
<< endl;
for (auto &v : a)
cout
<< v << ends;
//17
replace_copy(b.begin(), b.end(), a.begin(), 2, 7);
cout
<< endl;
for (auto &v : a)
cout
<< v << ends;
//18
replace_copy_if(a.begin(), a.end(), b.begin(), f3, 5);
cout
<< endl;
for (auto &v : b)
cout
<< v << ends;
}int main()
(5)STL演算法之複製
修改序列式演算法能對容器內容造成修改,而改變容器一般有兩種方法 1 使用迭代器遍歷序列的過程中,直接改變元素的值 2 在元素複製的過程中,改變元素的值。能對容器內容造成改變的演算法主要包括 複製 轉換 互換 賦值 替換 逆轉 排列等 8種。1 複製 元素複製是指在兩個容器變數之間進行元素傳遞。1 c...
Linux之複製 本地,遠端複製 ,移動,刪除檔案
複製檔案或資料夾 cp 要複製的檔案 指定複製到的目錄 檔案 cp home a.txt data 資料夾 cp r home a data 遠端複製檔案或資料夾到本地目錄 scp 使用者名稱 遠端ip 要複製的檔案 夾 路徑 指定複製到本地的路徑 如下 檔案 scp root 60.205 211...
STL的移動演算法
要在自定義型別中使用移動演算法,需要在元素中提供移動賦值運算子,移動賦值運算子和std move 詳見 c 高階程式設計 第9章 class mystring mystring const string str mstr str mystring operator mystring rhs 移動賦值...