您的位置:首页 > 编程语言 > C语言/C++

【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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stl c++ for-each 循环