zoukankan      html  css  js  c++  java
  • 使用std::accumulate计算和、积和平均值

    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;
    
    }
    
  • 相关阅读:
    E. Arranging The Sheep
    B. Box Fitting
    E. Permutation by Sum
    D. Corrupted Array
    联通 F677V2 光猫改桥接
    IntelliJ IDEA 常用快捷键整理
    Git 常用命令速查表
    Git 入门操作指南
    Anaconda 常用命令总结
    VS code 快捷键整理
  • 原文地址:https://www.cnblogs.com/lilun/p/1857025.html
Copyright © 2011-2022 走看看