#include
<numeric>
T reduce (In first, In last) T reduce (In first, In last, T startwert) T reduce (In first, In last, T startwert, Binary op) T reduce (Exec pol, In first, In last) T reduce (Exec pol, In first, In last, T startwert) T reduce (Exec pol, In first, In last, T startwert, Binary op)
Bildet die "Summe" vom (optionalen) startwert
mit allen Werten des Bereiches [first,last). Die Reihenfolge der "Additionen" op
ist nicht festgelegt.
startwert + x1 + x2 + x3 + ... ---> Ergebnis
bzw. führt eine "verallgemeinerte Summation" mit einem zweistelligen Funktor durch.
x1 x2 x3 | | | v v v startwert -> op -> op -> op -> ... ---> Ergebnis
first | Anfang des Bereiches |
last | Ende des Bereiches |
startwert | Anfangswert der Berechnung |
op | zweistelliges Funktionsobjekt |
pol | parallele Ausführungsart |
Rückgabewert: Summe bzw. "verallgemeinerte Summe",
bei leerem Bereich der startwert
.
#include <functional> #include <iostream> #include <numeric> #include <vector> int main() { std::vector v {1.0, 2.0, 3.0}; auto sum = std::reduce(begin(v), end(v)); std::cout << sum << '\n'; auto product = std::reduce(begin(v), end(v), 10.0, std::multiplies{}); std::cout << product << '\n'; }