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