Sono necessarie soluzioni più carine nell'esempio seguente ma con std :: accumulate.utilizzo di 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;
}
Allora perché non si utilizza std :: si accumulano? Qual è esattamente la domanda? – jalf
@jalf: buon punto - Mi chiedo cosa manca il mio codice :) – dirkgently
Acumulate restituisce cosa? Pensavo che restituisse lo stesso tipo di un oggetto, no? –