#include
<numeric>
T inclusive_scan (In first, In last, Out result) T inclusive_scan (In first, In last, Out result, Binary op) T inclusive_scan (In first, In last, Out result, Binary op, T startwert) T inclusive_scan (Exec pol, In first, In last, Out result) T inclusive_scan (Exec pol, In first, In last, Out result, Binary op) T inclusive_scan (Exec pol, In first, In last, Out result, Binary op, T startwert)
Bildet die "Partialsummenfolge" für alle Werte des Bereiches [first,last)
zuzüglich optionalem 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 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 |
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::inclusive_scan(arr, arr+5, sum, std::plus{}, 100); for (double d : sum) { std::cout << d << ' '; } std::cout << '\n'; }