C++ STL中的常用遍历算法分享
莫浅子 人气:01.for_each
功能描述
实现容器遍历
函数原型
for_each(itertor beg,iterator end,_func);
//遍历算法 遍历容器元素
//beg 开始迭代器
//end 结束迭代器
//_func函数或者函数对象
代码
#include <iostream> using namespace std; #include <vector> #include <algorithm> //普通函数 void print01 (int val) { cout<< val << " "; } //放寒暑 class print02 { 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(),print02()); cout<<endl; } int main() { test01(); }
运行结果
2.transform
功能描述
搬运容器到另一个容器
函数原型
transform (iterator beg1,iterator endl, iterator beg2,_func);
//beg1 源容器开始迭代器
//end1 源容器结束迭代器
//beg2 目标函数开始迭代器
//_func 函数或者函数对象
代码
#include <iostream> using namespace std; #include <vector> #include <algorithm> class Transform { public: int operator()(int v) { return v; } }; 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); } vector<int>vTarget; //目标函数 vTarget.resize(v.size()); //目标容器要提前开辟空间 transform(v.begin(), v.end(), vTarget.begin(),Transform()); for_each(vTarget.begin(),vTarget.end(), MyPrint()); cout<<endl; } int main() { test01(); }
运行结果
加载全部内容