#include
<algorithm>
For remove_if (For first, For last, Pred pred) For remove_if (Exec pol, For first, For last, Pred pred) Range ranges::remove_if (Range r, Pred pred, Proj proj = {}) Range ranges::remove_if (For first, For last, Pred pred, Proj proj = {})
Entfernt im Bereich [first,last) alle Elemente e
, auf die pred(proj(e))
zutrifft.
Der Algorithmus arbeitet so, dass entfernten Elementen und ihren Nachfolgern nachfolgende Werte zugewiesen werden. Damit ist der Algorithmus nicht für assoziative Container einsetzbar. Die Elemente hinter dem neuen Ende werden nicht wirklich entfernt. Dies kann nur ein Container selbst.
first | Anfang des Bereiches |
last | Ende des Bereiches |
pred | einstelliges Prädikat |
proj | einstelliger Funktor (Vorgabe = std::identity ) |
pol | parallele Ausführungsart |
Rückgabewert: Iterator j
auf das neue Ende des Bereiches bzw {j,last}
.
#include <algorithm> #include <functional> #include <string> #include <iostream> int main() { std::string s = "Hallo, Welt"; std::cout << s << '\n'; auto i = remove_if(begin(s), end(s), [](char c) { return c <'l'; }); s.erase(i, end(s)); std::cout << s << '\n'; }