remove_if [C++ Reference]
Keywords: stl,algorithm,remove_if
Date: 2009-10-09T01:22:10-0700

[[remove_if]]
C++ Reference
Translations of this page?:

- en
- br-pt
- cn
- fr
- it
- jp
- pl
- ru
- tr

## remove_if

Syntax:

        #include <algorithm>
        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 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 linear time.

remove_if() cannot be used with associative containers like set<> or map<>.

Related Topics: remove, remove_copy, remove_copy_if

Edit this page • Old revisions
• • • Login • Index • Recent changes • RSS • cc •