namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:transform_exclusive_scan

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:lib:transform_exclusive_scan [2021-07-31 11:52] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== transform_exclusive_scan() ======
 +''#include'' [[..:include:numeric]]
 +
 +<code cpp>
 +T transform_exclusive_scan (In first, In last, Out result, T startwert, Binary op, Unary f) 
 +
 +T transform_exclusive_scan (Exec pol, In first, In last, Out result, T startwert, Binary op, Unary f) 
 +</code>
 + Bildet die "Partialsummenfolge"
 + mit den Ergebnissen der Funktion f 
 + 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
 +<code cpp>
 +          x1   x2   x3   x4  ...  xn-1 xn
 +          |    |    |    |        |
 +          v    v    v    v        v
 +        f(.) f(.) f(.) f(.)     f(.) 
 +          |    |    |    |        |
 +          v    v    v    v        v
 +         .+   .+   .+   .+       .+    
 +        / |  / |  / |  / |      / |
 +       /  v /  v /  v /  v /      v
 +startwert s1   s2   s3   s4  ...  sn
 +</code>
 +==== Parameter ====
 +| ''first'' | Anfang des Bereiches|
 +| ''last''  | Ende des Bereiches|
 +| ''result''| Anfang des Ergebnisbereiches |
 +| ''startwert'' | Anfangswert der Berechnung |
 +| ''op''    | zweistelliges Funktionsobjekt |
 +| ''f''     | einstelliges Funktionsobjekt |
 +| ''pol''   | [[..:include:execution|parallele Ausführungsart]] |
 +==== Ergebnis ====
 +Rückgabewert: Iterator auf Ende des Ergebnisbereiches
 +
 +==== Siehe auch ====
 +[[exclusive_scan]],
 +[[partial_sum]],
 +[[transform_inclusive_scan]],
 +[[..:stl#Funktionsadapter]].
 +
 +==== Beispiel ====
 +<code cpp transform_exclusive_scan.cpp>
 +#include <functional>
 +#include <numeric>
 +#include <iostream>
 +
 +int main()
 +{
 +  double arr[] = { 1, 2, 3, 4, 5 };
 +  double sum[5]; 
 +
 +  std::transform_exclusive_scan(arr, arr+5, sum, 100, std::plus{}, [](auto x){ return x*x; });
 +
 +  for (double d : sum)
 +  {
 +    std::cout << d << ' ';
 +  }
 +  std::cout << '\n';   
 +}
 +</code>
  
kennen/lib/transform_exclusive_scan.txt · Zuletzt geändert: 2021-07-31 11:52 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki