std::generatorの練習。
generateアルゴリズムは、引数をとらない関数オブジェクト gen の呼び出し結果を、範囲[first,last)内の各要素に代入する。
#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());