这是C ++标准库remove
代码中的代码。为什么用不平等if (!(*first == val))
来代替if (*first != val)
?
template <class ForwardIterator, class T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val)
{
ForwardIterator result = first;
while (first!=last) {
if (!(*first == val)) {
*result = *first;
++result;
}
++first;
}
return result;
}
operator==
有望在此处使用...
const
在我之前的评论中的示例中也应该有一个,但是您明白了。(为时已晚,无法对其进行编辑)
operator!=
。只需使用operator==
实现:bool operator!=(const Foo& other) { return !(*this == other); }