for_each()用法及回返值:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class MeanValue
{
private:
long num;
long sum;
public:
MeanValue():num(0),sum(0){}
void operator()(int elem)
{
num++;
sum+=elem;
}
double value()
{
return static_cast<double>(sum)/static_cast<double>(num);//计算平均值
}
};
void print(int elem)
{
cout<<elem<<" ";
}
int main()
{
vector<int> coll;
for(int i=1;i<=8;i++)
{
coll.push_back(i);
}
for_each(coll.begin(),coll.end(),print);//调用函数
cout<<endl;
MeanValue mv=for_each(coll.begin(),coll.end(),MeanValue());//调用仿函数
cout<<"mean value:"<<mv.value()<<endl;
system("pause");
return 0;
}
运行结果:
1 2 3 4 5 6 7 8
mean value:4.5