#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
/*
for_each()有一个独门秘诀,其他算法概莫有之:那就是它可以返回其仿函数(返回所传入的函数对象的
最终状态).
这样我们就可以通过for_each()的返回值来获取仿函数的状态.
*/
/* 仿函数*/
class MeanValue
{
public:
MeanValue():num(0),sum(0){}
void operator()(int elem)
{
++num;
sum += elem;
}
double GetMean()
{
return static_cast<double>(sum)/static_cast<double>(num);
}
private:
long num;
long sum;
};
void Test__for_each()
{
vector<int> intVec;
for(int i=1;i<10;++i)
{
intVec.push_back(i);
}
MeanValue status = for_each(intVec.begin(), intVec.end(), MeanValue());
cout<<"Mean Value = "<<status.GetMean()<<endl; //通过for_each返回值访问其最终状态(返回
所传入的函数对象的最终状态).
}
int main(int argc, char* argv[])
{
Test__for_each();
return 0;
}
评论0
最新资源