// accumulate example
#include <iostream> // std::cout
#include <functional> // std::minus
#include <numeric> // std::accumulate
int myfunction (int x, int y)
{ return x + 2*y;
}
class myclass
{ public:
int operator()(int x, int y)
{ return x + 3*y;
}
};
int main ()
{ int init = 100;
int numbers[] = {10,20,30};
std::cout << "using default accumulate: ";
std::cout << std::accumulate( numbers,
numbers+3,
init);
std::cout << '\n';
std::cout << "using functional's minus: ";
std::cout << std::accumulate (numbers,
numbers+3,
init,
std::minus<int>() );
std::cout << '\n';
std::cout << "using custom functional function: ";
std::cout << std::accumulate (numbers,
numbers+3,
init,
myfunction);
std::cout << '\n';
std::cout << "using custom functional object: ";
myobject
std::cout << std::accumulate (numbers, numbers+3, init, myobject);
std::cout << '\n';
return 0;
}