Inhaltsverzeichnis

reduce()

#include <numeric>

T reduce (In first, In last) 
T reduce (In first, In last, T startwert) 
T reduce (In first, In last, T startwert, Binary op) 
 
T reduce (Exec pol, In first, In last) 
T reduce (Exec pol, In first, In last, T startwert) 
T reduce (Exec pol, In first, In last, T startwert, Binary op)

Bildet die "Summe" vom (optionalen) startwert mit allen Werten des Bereiches [first,last). Die Reihenfolge der "Additionen" op ist nicht festgelegt.

 startwert  + x1  + x2  + x3  + ... ---> Ergebnis

bzw. führt eine "verallgemeinerte Summation" mit einem zweistelligen Funktor durch.

              x1    x2    x3    
              |     |     |
              v     v     v
 startwert -> op -> op -> op -> ... ---> Ergebnis

Parameter

first Anfang des Bereiches
last Ende des Bereiches
startwert Anfangswert der Berechnung
op zweistelliges Funktionsobjekt
pol parallele Ausführungsart

Ergebnis

Rückgabewert: Summe bzw. "verallgemeinerte Summe", bei leerem Bereich der startwert.

Siehe auch

accumulate(), transform_reduce(), Funktionsadapter.

Beispiel

reduce.cpp
#include <functional>
#include <iostream>
#include <numeric>
#include <vector>
 
int main()
{
  std::vector v {1.0, 2.0, 3.0};
  auto sum = std::reduce(begin(v), end(v));
  std::cout << sum << '\n';
  auto product = std::reduce(begin(v), end(v), 10.0, std::multiplies{});
  std::cout << product << '\n';
}