【STL】非变异算法之循环
2016-08-16 10:00
375 查看
for_each的使用
实例1简单的对数组和容器进行操作
#include <iostream> #include <algorithm> #include <vector> using namespace std; /////////////////for_each的函数 void printCube(int n) { cout<<n*n*n<<endl; } int main() { ////////for_each 数组 int a[] = {0,1,2,3,4,5,6,7,8,9}; int len = sizeof(a)/sizeof(int); for_each(a,a+10,printCube); ////////for_each 容器 vector<int>iVec1(a,a+10); for_each(iVec1.begin(),iVec1.end(),printCube); system("pause"); return 0; }
实例2
#include <iostream> #include <algorithm> #include <vector> using namespace std; class printInfo////////打印类 最大值 最小值 和 { private: int nSum; int nMax; int nMin; int count; public: printInfo():count(0),nSum(0){} int getnSum(){return nSum;} int getnMax(){return nMax;} int getnMin(){return nMin;} void operator() (int x) { if(count == 0) { nMax = x; nMin = x; } else { if(nMin > x) nMin = x; if(nMax < x) nMax = x; } count++; nSum += x; } }; int main() { int a[] = {1,2,3,4,5,6,7,8,9}; int len = sizeof(a)/sizeof(a[0]); printInfo P = for_each(a,a+len,printInfo()); cout<<"最大值:"<<P.getnMax()<<endl; cout<<"最小值:"<<P.getnMin()<<endl; cout<<"和:"<<P.getnSum()<<endl; system("pause"); return 0; }
3.实例3
#include <iostream> #include <algorithm> #include <vector> #include <functional> using namespace std; ////////打印类 最大值 最小值 和 template<class T,class T1> class printInfo:public unary_function<T,T1> { private: T nSum; T nMax; T nMin; int count; public: printInfo():count(0),nSum(0){} T getnSum(){return nSum;} T getnMax(){return nMax;} T getnMin(){return nMin;} T1 operator() (T x) { if(count == 0) { nMax = x; nMin = x; } else { if(nMin > x) nMin = x; if(nMax < x) nMax = x; } count++; nSum += x; } }; int main() { int a[] = {1,2,3,4,5,6,7,8,9}; int len = sizeof(a)/sizeof(a[0]); printInfo<int,void> P = for_each(a,a+len,printInfo<int,void>()); cout<<"最大值:"<<P.getnMax()<<endl; cout<<"最小值:"<<P.getnMin()<<endl; cout<<"和:"<<P.getnSum()<<endl; system("pause"); return 0; }
相关文章推荐
- 非变异算法之循环(for_each)
- STL 各种非变异算法。
- stl-非变异算法
- 【STL】非变异算法之比较
- C++STL之变异算法
- 实战c++中的vector系列--vector的遍历(stl算法、vector迭代器(不要在循环中推断不等于end())、operator[])
- STL 泛型算法vs. 手写的循环
- 【STL】非变异算法之查询
- stl-变异算法
- 实战c++中的vector系列--vector的遍历(stl算法、vector迭代器(不要在循环中判断不等于end())、operator[])
- 实战c++中的vector系列--vector的遍历(stl算法、vector迭代器(不要在循环中判断不等于end())、operator[])
- 【STL】非变异算法之计数
- 算法之冒泡、选择、递归、随机、循环
- MySQL查询优化之五-嵌套循环连接算法(Nested-Loop Join Algorithms)
- STL算法设计理念 - 预定义函数对象
- STL常用算法
- 算法导论 32.4-5 字符串的循环旋转问题
- 【经验】STL的list vector在iterator迭代器的循环中 使用erase 造成的BUG
- STL_算法_查找算法(lower_bound、upper_bound、equal_range)
- 0008算法笔记——【分治法】循环赛事日程表