Need prettier solution of below example but with std::accumulate.
#include <algorithm> #include <vector> #include <iostream> class Object { public: Object( double a, double b ): a_( a ), b_( b ) {} double GetA() const { return a_; } double GetB() const { return b_; } // other methods private: double a_; double b_; }; class Calculator { public: Calculator( double& result ): result_( result ) {} void operator() ( const Object& object ) { // some formula result_ += object.GetA() * object.GetB(); } private: double& result_; }; int main() { std::vector< Object > collection; collection.push_back( Object( 1, 2 ) ); collection.push_back( Object( 3, 4 ) ); double result = 0.0; std::for_each( collection.begin(), collection.end(), Calculator( result ) ); std::cout << 'result = ' << result << std::endl; return 0; }
do changes in Calculator and main function.
also it could be better: