1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <iostream> #include <functional> #include <numeric>
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};
std::cout << "using default accumulate: "; std::cout << std::accumulate(numbers,numbers+3,init); std::cout << '\n';
std::cout << "using functional minus: "; std::cout << std::accumulate (numbers, numbers+3, init, std::minus<int>()); std::cout << '\n';
std::cout << "using custom function: "; std::cout << std::accumulate(numbers, numbers + 3, 0, [](int a, Grade b){return a + b * 2; }); std::cout << '\n';
std::cout << "using custom object: "; std::cout << std::accumulate (numbers, numbers+3, init, myobject); std::cout << '\n';
return 0; }
|