您的位置:首页 > 其它

for_each 返回值

2013-03-03 16:52 204 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: