« vectorの容量はerase()しても減らない | メイン | 目標とする人のインプットに目を向ける »

std::accumulateの練習

std::accumulateの練習

要素の合計値を求める

std::vector<int> v;
//vに値を設定する
std::generate(v.begin(), v.end(), rand);
//要素の合計値を求める
//3番目の引数は初期値
int sum = accumulate(v.begin(), v.end(), 0);

文字列を結合する

//ランダムな文字を返す
struct Generator
{
  string operator ()()
  {
    static const string s = "abcd";
    return s.substr(random(s.length()), 1);
  }
};

std::vector<string> v(4);
//vに値を設定する
std::generate(v.begin(), v.end(), Generator());
//vの文字列を結合した、新しい文字列を取得する
string sum = accumulate(v.begin(), v.end(), string());

引いてみる

//1から順番に整数を返す
struct Generator
{
  int operator ()()
  {
    static int i = 1;
    return i++;
  }
};

std::vector<int> v(10);
std::generate(v.begin(), v.end(), Generator());
//4番目の引数を指定して、引き算を行うようにする
int sum = accumulate(v.begin(), v.end(), 100, minus<int>());

トラックバック

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

コメントを投稿

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

About

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

ひとつ前の投稿は「vectorの容量はerase()しても減らない」です。

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

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

Powered by
Movable Type 3.35