class DPoint
{
public:
	DPoint(double _x,double _y, double _z)
		: x(_x),y(_y),z(_z){}

	double x;
	double y;
	double z;
};

class PointAverage: public binary_function<DPoint, DPoint, DPoint>
{
public:
	PointAverage():xSum(0),ySum(0),zSum(0),numPoints(0){}
	const DPoint operator()(const DPoint& avgSoFar, const DPoint& p)
	{
		++numPoints;
		xSum += p.x;
		ySum += p.y;
		zSum += p.z;
		return DPoint(xSum/numPoints,ySum/numPoints,zSum/numPoints);
	}

private:
	double xSum;
	double ySum;
	double zSum;
	size_t numPoints;
};

int main() 
{

	list<double> ld;
	ld.push_back(1.0);
	ld.push_back(2.0);
	ld.push_back(3.0);
	ld.push_back(4.0);
	double sum = accumulate(ld.begin(),ld.end(),0.0);
	cout<<sum<<endl;

	double product = accumulate(ld.begin(),ld.end(),1.0,multiplies<double>());
	cout<<product<<endl;

	vector<DPoint> pv;
	pv.push_back(DPoint(2,3,5));
	pv.push_back(DPoint(3,4,5));
	pv.push_back(DPoint(5,6,2));

	
	DPoint avg = accumulate(pv.begin(),pv.end(),DPoint(0,0,0),PointAverage());
	cout<<avg.x<<" "<<avg.y<<" "<<avg.z<<endl;

}

相关文章:

  • 2022-12-23
  • 2021-09-14
  • 2021-11-29
  • 2022-12-23
  • 2021-12-10
  • 2021-06-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-31
  • 2021-11-28
  • 2021-11-15
  • 2021-11-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案