ゆとりーなの日記

日記的な事を書いて行くと思はれる

やりたいことが出来ないとがっかりする

C++にはstd::accumulateという関数がというヘッダにはありまして、こいつはコンテナの指定された範囲内の要素を加算してくれるんですね。
構造体のとあるメンバの合計値を出してもらおうと奮闘したのですが、駄目でした。

struct hoge {
  float x_;
};

std::vector<hoge> v;

float sum_x(std::accumulate(v.begin(), v.end(), 0.f, [](const hoge& lhs, const hoge &rhs) {
  return lhs + rhs;
}));

こんな感じでいけるかな〜とか思ってたんですが、普通に駄目でした。floatをconst hoge&に変換できませんとか出てた気がします。テンプレート引数等色々といじっても見たんですが、const_iteratorがfloatに変換できませんなど何かしらエラーが出てきて結局駄目でした。std::accumulateで構造体のとあるメンバの合計値を計算する方法はないのでしょうか・・・。世の中には構造体のとあるメンバのイテレータアダプタがあるとかないとか聞いたことがありますが・・・。