64,662
社区成员
发帖
与我相关
我的任务
分享
#include"algostuff.h"
using namespace std;
class MeanValue
{
private:
long num;
long sum;
public:
MeanValue() : num(0),sum(0) {};
void operator () (int elem)
{
num++;
sum+=elem;
}
operator double() //这里是什么意思?是重载了还是其他什么的?
{
return static_cast<double>(sum);
}
};
int main()
{
vector<int> coll;
INSERT_ELEMENTS(coll,1,8);
double mv=for_each(coll.begin(),coll.end(),MeanValue());
//for_each返回的不是操作吗?为什么把返回值赋给double
cout<<"mean value is "<<mv<<endl;
}
MeanValue(int elem)//函数
{
static long num;//对象的成员,看成函数的static变量,每次进入时上次值还存在!
static long sum;
}
class MeanValue
{
private:
long num;
long sum;
public:
MeanValue() : num(0),sum(0) {};
void operator () (int elem) //函数对象
{
num++;
sum+=elem;
}
operator double() //这里是什么意思?是重载了还是其他什么的?
{
return static_cast<double>(sum);
}
};
for_each
{
for ( coll.begin()到coll.end() ) MeanValue(coll[i]);//sum+=elem;sum记录coll[i]的累加和coll.begin()到coll.end()所有int元素的和
return MeanValue(coll[i])//返回上面的函数对像,实际调用转换操作符operator double() 返回里面的sum值
};