これはコードの密接な問題です。これは既に例があります。私はコードでこの1トンをやっているし、これらのすべてのラムダ(いくつかは同じもの)の作成は私にうっとりさせ始めた。構造体のコンテナからフィールドを合計する必要があります
ので、構造体の与えられた:私はそれらへのポインタのコンテナを持って
struct foo {
int b() const { return _b; }
int a() const { return _a; }
int r() const { return _r; }
const int _b;
const int _a;
const int _r;
};
を、今私は、コンテナを通過し、フィールドのいずれかの合計を取得したい、のはvector<foo*> foos
を言わせて。一例として、
私はフィールド_r
を望んでいた場合は、その後、私の現在のアプローチは、これを行うことです。
accumulate(cbegin(foos), cend(foos), 0, [](const auto init, const auto i) { return init + i->r(); })
私はどこでも、この行を書いています。これを改善することはできますか?私は本当にこのようなものを書いています:
私は標準がそういうものを提供しているとは思いません。私は明らかにそれを書くことができましたが、読者は疑問のコードを理解するために、accumulate
のことを知るだけでなく、
私は小さなユーティリティ機能を提供するとの問題が表示されません。時には、標準ライブラリにあるものについての情報も参照する必要があります。すべてそれを心から知っている人はほとんどいません。それがきれいに書かれ、アクセス可能な限り、標準ライブラリに抽象化を追加してみませんか? – StoryTeller
@StoryTeller今私はそれにも傾いています。この質問は、私がそれをやる前に私の最後のストップです、ちょうど良い方法があるように感じます。 –
あなたはクラスメソッドを考えましたか?静的void foo :: acc4(std :: vector foos)? –