kennen:lib:transform_reduce
Inhaltsverzeichnis
transform_reduce()
#include
<numeric>
T transform_reduce (In first, In last, T startwert, Binary op, Unary f) T transform_reduce (In first, In last, In first2, T startwert) T transform_reduce (In first, In last, In first2, T startwert, Binary op, Binary op2) T transform_reduce (Exec pol, In first, In last, T startwert, Binary op, Unary f) T transform_reduce (Exec pol, In first, In last, In first2, T startwert) T transform_reduce (Exec pol, In first, In last, In first2, T startwert, Binary op, Binary op2)
Bildet die "Summe" vom (optionalen) startwert
mit den Ergebnissen der Funktion f für alle Werte des Bereiches [first, last)
startwert + f(x1) + f(x2) + (x3) + ... ---> Ergebnis
bzw.
das "Skalarprodukt" der Folgenwerte [first, last) und [first2,…)
zuzüglich startwert
.
Die Reihenfolge der "Additionen" op
ist nicht festgelegt.
x1 x2 x3 x4 ... xn | y1 | y2 | y3 | y4 ...| yn \ / \ / \ / \ / \ / * * * * * | | | | | v v v v v startwert-> + -> + -> + -> + -> ... + -> Ergebnis
Parameter
first | Anfang eines Bereiches |
last | Ende eines Bereiches |
first2 | Anfang des zweiten Bereiches |
startwert | Anfangswert der Berechnung |
op1 | äußere Operation ("verallgemeinerte" Summe) |
op2 | innere Operation ("verallgemeinertes" Produkt) |
f | einstellige, innere Operation |
pol | parallele Ausführungsart |
Ergebnis
Rückgabewert: Summe von startwert
und der transformierten Werte bzw. "verallgemeinerte Summe",
bei leerem Bereich der startwert
.
Siehe auch
Beispiel
- transform_reduce.cpp
#include <iostream> #include <numeric> #include <vector> int main() { auto v1 = std::vector{1.0, 2.0, 3.0}; auto v2 = std::vector{2.0, 3.0, 4.0}; auto result1 = std::transform_reduce(begin(v1), end(v1), 100.0, std::plus{}, [](auto x){ return x*x; }); std::cout << result1 << '\n'; auto result2 = std::transform_reduce(begin(v1), end(v1), begin(v2), 100.0); std::cout << result2 << '\n'; auto result3 = std::transform_reduce(begin(v1), end(v1), begin(v2), 100.0, std::plus{}, std::multiplies{}); std::cout << result3 << '\n'; }
kennen/lib/transform_reduce.txt · Zuletzt geändert: 2021-07-31 11:53 von 127.0.0.1