#include
<numeric>
T transform_inclusive_scan (In first, In last, Out result, Binary op, Unary f) T transform_inclusive_scan (In first, In last, Out result, Binary op, Unary f, T startwert) T transform_inclusive_scan (Exec pol, In first, In last, Out result, Binary op, Unary f) T transform_inclusive_scan (Exec pol, In first, In last, Out result, Binary op, Unary f, T startwert)
Beschreibung:
Bildet die "Partialsummenfolge"
mit den Ergebnissen der Funktion f für alle Werte des Bereiches [first,last)
zuzüglich startwert
.
Die Reihenfolge der "Additionen" op
ist nicht festgelegt.
Die Verarbeitung der Werte erfolgt nach dem Rechenschema
x1 x2 x3 x4 ... xn | | | | | v v v v v f(.) f(.) f(.) f(.) f(.) | | | | | v v v v v startwert -> + .+ .+ .+ .+ | / | / | / | / | v / v / v / v / v s1 s2 s3 s4 ... sn
first | Anfang des Bereiches |
last | Ende des Bereiches |
result | Anfang des Ergebnisbereiches |
op | zweistelliges Funktionsobjekt |
f | einstelliges Funktionsobjekt |
startwert | Anfangswert der Berechnung |
pol | parallele Ausführungsart |
Rückgabewert: Iterator auf Ende des Ergebnisbereiches
#include <functional> #include <numeric> #include <iostream> int main() { double arr[] = { 1, 2, 3, 4, 5 }; double sum[5]; std::transform_inclusive_scan(arr, arr+5, sum, std::plus{}, [](auto x){ return x*x; }, 100); for (double d : sum) { std::cout << d << ' '; } std::cout << '\n'; }