std::accumulateの練習

std::accumulateの練習

要素の合計値を求める

#include <algorithm> //generate
#include <numeric> //accumulate
#include <vector> //vector

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>());

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください