Ich versuche std::accumulate
mit std::min
zu kombinieren. So etwas (wird nicht kompiliert):Ist es möglich, std :: accumulate mit std :: min zu verwenden?
vector<int> V{2,1,3};
cout << accumulate(V.begin()+1, V.end(), V.front(), std::min<int>);
Ist es möglich? Ist es möglich ohne Wrapper Funktor für std::min
zu schreiben?
Ich weiß, dass ich dies mit lambda tun kann:
vector<int> V{2,1,3};
cout << std::accumulate(
V.begin()+1, V.end(),
V.front(),
[](int a,int b){ return min(a,b);}
);
Und ich weiß, gibt es std::min_element
. Ich versuche nicht, Min-Element zu finden, ich muss std::accumulate
mit std::min
(oder ::min
) für meine Bibliothek kombinieren, die Funktion-Programmierung wie Ausdrücke in C++ ermöglicht.
Sie könnten auch einen hässlichen Guss verwenden '(const int & (*) (const int &, const int &)) std :: min'. –
Ich neige dazu, die Lambda-Version besser zu mögen. – moooeeeep
@JesseGood: y kein 'static_cast'? : \ – Mehrdad