fork download
  1. #include <iostream>
  2. #include <functional>
  3.  
  4. using namespace std;
  5.  
  6. int accum(int * arr, int N, int init, std::function<int(int,int)> f)
  7. {
  8. for(int i = 0; i < N; ++i)
  9. init = f(init,arr[i]);
  10. return init;
  11. }
  12.  
  13. int prod(int i, int j)
  14. {
  15. return i*j;
  16. }
  17.  
  18. struct square
  19. {
  20. int operator() (int i, int j) { return i + j*j; }
  21. };
  22.  
  23. int main(int argc, const char * argv[])
  24. {
  25. int a[] = { 1, 2, 3, 4, 5, 6 };
  26. cout << "Sum = " << accum(a,6,0,[](int i, int j) { return i+j; }) << endl;
  27. cout << "Mul = " << accum(a,6,1,prod) << endl;
  28. cout << "Sq = " << accum(a,6,0,square()) << endl;
  29.  
  30. }
  31.  
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
Sum = 21
Mul = 720
Sq  = 91