Inhaltsverzeichnis

transform()

#include <algorithm>

Out transform (In first, In last, Out result, Func func) 
Out transform (In first, In last, In first2, Out result, Binary func) 
Out transform (Exec pol, In first, In last, Out result, Func func) 
Out transform (Exec pol, In first, In last, In first2, Out result, Binary func) 
 
[end,res] = ranges::transform (Range r, Out result, Func func, Proj proj = {}) 
[end,res] = ranges::transform (In first, In last, Out result, Func func, Proj proj = {}) 
 
[end1,end2,res] = ranges::transform (Range1 r1, Range2 r2, Out result, Binary func, Proj1 proj1 = {}, Proj2 proj2 = {}) 
[end1,end2,res] = ranges::transform (In first, In last, In2 first2, In2 last2, Out result, Binary func, Proj1 proj1 = {}, Proj2 proj2 = {})

Errechnet aus den Elementen x des Bereiches [first,last) und Elementen y des Bereiches [first2, last2) eine Folge von Werten func(proj(x)) bzw. func(proj1(x), proj2(y)) und legt diese im Bereich [result,…) ab.

Parameter

first Anfang des Quellbereiches
last Ende des Quellbereiches
first2 Anfang des zweiten Quellbereiches
result Anfang des Zielbereiches
func Funktion oder Funktionsobjekt
proj, proj1, proj2 einstelliger Funktor (Vorgabe = std::identity)
pol parallele Ausführungsart

Ergebnis

Rückgabewert:

mit N=last-first bzw. N=min(last1-first1,last2-first2).

Siehe auch

for_each(), transform_exclusive_scan(), transform_inclusive_scan(), transform_reduce().

Beispiel

transform.cpp
#include <algorithm>
#include <iostream>
 
char caesar(char c)
{
  return c+3;
}
 
char subtract(char c, char ziffer)
{
  return c - (ziffer-'0');
}
 
int main()
{
  char s[] = "Hallo Welt";
  const char c[] = "123123123123";
 
  std::cout << s << '\n';
  std::transform(s, s+10, s, caesar);
  std::cout << s << '\n';
  std::transform(s, s+10, c, s, subtract);
  std::cout << s << '\n';
}