#include
<numeric>
T exclusive_scan (In first, In last, Out result, T startwert) T exclusive_scan (In first, In last, Out result, T startwert, Binary op) T exclusive_scan (Exec pol, In first, In last, Out result, T startwert) T exclusive_scan (Exec pol, In first, In last, Out result, T startwert, Binary op)
Bildet die "Partialsummenfolge" für alle Werte des Bereiches [first,last-1).
zuzüglich startwert
als ersten Ergebniswert.
Die Reihenfolge der "Additionen" op
ist nicht festgelegt.
Die Verarbeitung der Werte erfolgt nach dem Rechenschema
x1 x2 x3 x4 ... xn-1 xn | | | | | v v v v v .+ .+ .+ .+ .+ / | / | / | / | / | / v / v / v / v / v startwert s1 s2 s3 s4 ... sn
first | Anfang des Bereiches |
last | Ende des Bereiches |
result | Anfang des Ergebnisbereiches |
startwert | Anfangswert der Berechnung |
op | zweistelliges Funktionsobjekt |
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::exclusive_scan(arr, arr+5, sum, 100, std::plus{}); for (double d : sum) { std::cout << d << ' '; } std::cout << '\n'; }