これは、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); }