Name
remove_if function template — Reorders a range to remove elements for which a predicate returns false
Synopsis
template<typename FwdIter, typename Predicate>
FwdIter remove_if(FwdIter first, FwdIter last, Predicate pred);
The remove_if
function
template “removes” items for which pred
returns false from the range
[first
, last
). The return value is one past the
new end of the range. The relative order of items that are not
removed is stable.
Nothing is actually erased from the underlying container;
instead, items to the right are assigned to new positions so they
overwrite the elements for which pred
returns false
. See Figure 13-13 (under remove_copy
) for an example of the removal
process.
Technical Notes
The remove_if
function
template assigns *(first +
n++) = *(first + m), in which n starts at 0, for all values of
m in [0, last - first), in which
pred(*(first + m)) is false. The return value is
first + n.
Complexity is linear: exactly last - first comparisons are performed.
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.