« 目標とする人のインプットに目を向ける | メイン | std::transformの練習 »

std::generatorの練習

std::generatorの練習。

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

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

//引数 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());

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/905

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年02月10日 13:30に投稿されたエントリーのページです。

ひとつ前の投稿は「目標とする人のインプットに目を向ける」です。

次の投稿は「std::transformの練習」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35