とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

自作 accumulate 2 + 関数オブジェクト

STL―標準テンプレートライブラリによるC++プログラミング 第2版

// P182 ex08-02.cpp
template<typename InputIterator, typename T, typename BinaryFunction>
T accumulate2(InputIterator first, InputIterator last, T init,
              BinaryFunction binary_function)
{
 while(first != last){
  init = binary_function(init, *first);
  ++first;
 }
 return init;
}
class multiply_class{
public:
 int operator()(int x, int y)const{return x * y;}
};
multiply_class multiply_object;
#include<iostream>
#include<vector>
#include<cassert>
int main(){
 using std::cout;
 using std::endl;
 using std::vector;
 cout << "Demonstrating function pointer passing." << endl;
 int x[] = {2, 3, 5, 7, 11};
 vector<int>v(x, x + 5);
 const int product = accumulate2(v.begin(), v.end(), 1, multiply_object);
 assert(product == 2310);
 cout << " --- Ok." << endl;
}