STL常用演算法
阿新 • • 發佈:2021-10-15
1.STL-常用演算法
概述:
- 演算法主要是由標頭檔案
#include<algorithm>``#include<functional>``#inlcude<numeric>
組成 #include<algorithm>
是所有STL標頭檔案中最大的一個,範圍涉及到比較、交換、查詢、遍歷操作、複製,修改等等#include<functional>
體積很小,只包括幾個在序列上面進行簡單數學運算的模板函式#inlcude<numeric>
定義了一些模板類,用以宣告函式物件
2.常用遍歷演算法
演算法簡介:
for_each
transform
搬運容器到另一個容器
2.1 for_each
功能描述:
- 實現遍歷容器
函式原型:
for_each(iterator beg,iterator end,_func);
遍歷演算法,遍歷容器元素
beg開始迭代器
end結束迭代器
_func函式或者函式物件
示例:
#include<iostream> using namespace std; #include<vector> #include<algorithm> //常用遍歷演算法 fro_each //普通函式 void print01(int v1) { cout << v1 << " "; } //仿函式 class MyPrint { public: void operator()(int val) { cout << val << " "; } }; void test01() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } for_each(v.begin(), v.end(), print01); cout << endl; for_each(v.begin(), v.end(), MyPrint());//MyPrint()仿函式 cout << endl; } int main() { test01(); system("pause"); return 0; }
running
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
2.2 transform
功能描述:
- 搬運容器到另一個容器
函式原型:
transform(iterator beg1,iterator end1,iterator beg2,_func);
beg1源容器開始迭代器
end1源容器結束迭代器
beg2目標容器開始迭代器
_func函式或者函式物件
示例:
#include<iostream> using namespace std; #include<vector> #include<algorithm> //transform class Transform { public: int operator()(int val) { return val+10;//也可以做一些邏輯規則 } }; class MyPrint { public: void operator()(int val) { cout << val << " "; } }; void test01() { vector<int>v; for(int i = 0; i < 6; i++) { v.push_back(i); } vector<int>v2;//目標迭代器 v2.resize(v.size()); transform(v.begin(), v.end(), v2.begin(), Transform());//Transform()仿函式 for_each(v2.begin(), v2.end(), MyPrint());//MyPrint()仿函式 cout << endl; } int main() { test01(); system("pause"); return 0; }
running
10 11 12 13 14 15