Inhaltsverzeichnis

copy_if()

#include <algorithm>

Out copy_if (In first, In last, Out result, Pred pred) 
Out copy_if (Exec pol, In first, In last, Out result, Pred pred) 
 
[last, res] = ranges::copy_if (Range r, Out result, Pred pred, Proj = proj = {}) 
[last, res] = ranges::copy_if (In first, In last, Out result, Pred pred, Proj = proj = {})

Kopiert die Werte e des Bereiches [first,last) nach [result,…), die das Prädikat pred(proj(e)) erfüllen.

Parameter

first Anfang des Quellbereiches
last Ende des Quellbereiches
result Anfang des Zielbereiches
pred einstelliges Prädikat
proj einstelliger Funktor (Vorgabe = std::identity)
pol parallele Ausführungsart

Quell- und Zielbereich sollten nicht überlappen.

Ergebnis

Rückgabewert: Iterator auf das Ende des Zielbereiches bzw. {last, out + N} wobei N die Anzahl der Elemente des Quellbereichs ist, auf die pred(proj(e)) zutrifft, als Struktur mit Elementen namens in, out.

Siehe auch

copy(), copy_backward(), copy_n(), move(), remove_copy(), remove_copy_if().

Beispiel

copy_if.cpp
#include <algorithm>
#include <iostream>
 
int main()
{
  char str[]  = "aBcDeFgH";
  char ziel[] = "--------";
  std::cout << str << '\n';            // aBcDeFgH
 
  std::copy_if(str, str+8, ziel, [](char c) { return c <= 'Z'; } );
 
  std::cout << str << '\n';            // BDFH----
}