=====remove_if=====
Syntax:
#include
forward_iterator remove_if( forward_iterator start, forward_iterator end, Predicate p );
The remove_if() function removes all elements in the range [start,end) for
which the predicate p returns true.
The return value of this function is an iterator to the last element of the
pruned range.
Note that remove_if() doesn't actually "remove" things from the range [start, end); if
remove_if() is called on a container, the length of the container will remain the same
afterwards (remove_if() couldn't possibly affect that through the iterators alone), and
all the elements will still be in the container. Instead, remove_if() puts all the "removed"
elements to the end of the container, and returns the iterator that separates the not-removed
and removed elements. To actually remove items from a container, you would have to call the
erase() method of the container, to erase elements starting at the returned iterator.
This is usually combined in what is called the [[http://en.wikipedia.org/wiki/Erase-remove_idiom|erase-remove idiom]]:
container.erase(remove_if(container.begin(), container.end(), pred), container.end());
remove_if() is similar to [[partition]]() except that the predicate is reversed.
remove_if() runs in [[/complexity|linear time]].
remove_if() cannot be used with associative containers like set<> or map<>.
Related Topics: [[remove]], [[remove_copy]], [[remove_copy_if]]