std::generateの練習

std::generatorの練習。

generateアルゴリズムは、引数をとらない関数オブジェクト gen の呼び出し結果を、範囲[first,last)内の各要素に代入する。

Generic programming―STLによる汎用プログラミング

#include <algorithm>

//引数 v から順に1大きい値を返す関数オブジェクト
class generator
{
private:
  int i;
public:
  generator(int v = 0) : i(v) {}
  int operator ()() { return i++; }
};

std::vector<int> v(10);
//0から
std::generate(v.begin(), v.end(), generator());
//10から
std::generate(v.begin(), v.end(), generator(10));

フィボナッチ数

//フィボナッチ数
class FibonacciNumber
{
private:
  int i1, i2;
public:
  FibonacciNumber() : i1(0), i2(1) {}
  int operator()()
  {
    int result = i1 + i2;
    i1 = i2;
    i2 = result;
    return result;
  }
};

std::vector<int> v(10);
std::generate(v.begin(), v.end(), FibonacciNumber());

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です