template<class ForwardIterator, class T>
ForwardIterator remove(ForwardIterator first,
ForwardIterator last,
Predicate pred);
前两个参数表明了序列的开始和结束。第三个参数是一个判断条件或一个函数,要求返回布尔值。
与 remove() 不一样的是, remove_if() 通过第三个参数来选择它要去掉的元素。这样能使你在同一个容器中去掉具有不同值的元素(例如:奇数、元音字母、大写字母等)。这些都是在第三个参数中定义的。一个具体的例子有助于说明这点。
比如:我们想从字符串中去掉所有的元音字符。我们需要辨别出元音和非元音字符,使用如下面所定义的 vowel():
#include <functional>
template <class T>
class is_vowel: public std::unary_function<T, bool>
{
public:
bool operator() (T t) const
{
if((t == ‘a’) || (t == ‘e’) || (t == ‘i’) || (t == ‘o’) || (t == ‘u’))
return true;
return false;
}
};
(注意:对于其它非英语语言,上述的定义需要一些修改)