18
std::accumulate
とstd::min
を組み合わせようとしています。このようなもの(コンパイルされません):std :: minulateでstd :: accumulateを使用することはできますか?
vector<int> V{2,1,3};
cout << accumulate(V.begin()+1, V.end(), V.front(), std::min<int>);
可能でしょうか? std::min
のラッパーファンクタを記述せずに行うことはできますか?
は、私はラムダでこれを行うことができることを知っている:
vector<int> V{2,1,3};
cout << std::accumulate(
V.begin()+1, V.end(),
V.front(),
[](int a,int b){ return min(a,b);}
);
そして私はstd::min_element
があると知っています。私は最小要素を見つけようとしていないので、std::accumulate
とstd::min
(または::min
)を組み合わせて、C++の式のような関数プログラミングを可能にするマイライブラリにする必要があります。
あなたはあまりにも醜いキャストを使用することができ、 '(のconst int型&を(*)(のconst int型&、constのint型&))のstd ::分'。 –
私はラムダ版が好きです。 – moooeeeep
@ JesseGood:y uいいえ 'static_cast'ですか? :\ – Mehrdad