add accumulate example
parent
94bf9c06cf
commit
7f67471e7b
@ -0,0 +1,45 @@
|
||||
// http://www.cplusplus.com/reference/numeric/accumulate/
|
||||
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
|
||||
#include <functional> // std::minus
|
||||
#include <numeric> // std::accumulate
|
||||
|
||||
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};
|
||||
int res;
|
||||
|
||||
std::cout << "using default accumulate: ";
|
||||
res = std::accumulate(numbers, numbers+3, init);
|
||||
std::cout << res;
|
||||
assert(res == 100+10+20+30);
|
||||
std::cout << '\n';
|
||||
|
||||
std::cout << "using functional's minus: ";
|
||||
res = std::accumulate(numbers, numbers+3, init, std::minus<int>());
|
||||
std::cout << res;
|
||||
assert(res == 100-10-20-30);
|
||||
std::cout << '\n';
|
||||
|
||||
std::cout << "using custom function: ";
|
||||
res = std::accumulate(numbers, numbers+3, init, myfunction);
|
||||
std::cout << res;
|
||||
assert(res == 100+20+40+60);
|
||||
std::cout << '\n';
|
||||
|
||||
std::cout << "using custom object: ";
|
||||
res = std::accumulate(numbers, numbers+3, init, myobject);
|
||||
std::cout << res;
|
||||
assert(res == 100+30+60+90);
|
||||
std::cout << '\n';
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue