Potrzebujesz ładniejszego rozwiązania poniższego przykładu, ale ze std :: akumuluj.używanie std :: akumuluj
#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;
}
Więc dlaczego nie można użyć std :: zgromadzić? Czym dokładnie jest pytanie? – jalf
@jalf: Dobra uwaga - zastanawiam się, co jest takiego, czego brakuje w moim kodzie :) – dirkgently
Skumulowany zwraca co? Myślałem, że zwraca ten sam typ co obiekt, nie? –