// accumulate example
#include <iostream>
#include <functional>
#include <numeric>
using namespace std;
int myfunction (int x, int y) {return x+2*y;}
struct myclass {
int operator()(int x, int y) {return x+3*y;}
} myobject;
int main () {
int init = 100;
int numbers[] = {10,20,30};
cout << "using default accumulate: ";
cout << accumulate(numbers,numbers+3,init);
cout << endl;
cout << "using functional's minus: ";
cout << accumulate (numbers, numbers+3, init, minus<int>() );
cout << endl;
cout << "using custom function: ";
cout << accumulate (numbers, numbers+3, init, myfunction );
cout << endl;
cout << "using custom object: ";
cout << accumulate (numbers, numbers+3, init, myobject );
cout << endl;
return 0;
}
http://www.cplusplus.com/reference/numeric/accumulate/