C ++ - 从类Compare获得相等性

时间:2015-05-26 19:02:37

标签: c++ generics

我有通用类

template < class T, class Compare >
class MyClass {..};

我需要使用Compare检查两个对象的相等性。 我知道有两种方法可以做到。

方法

bool isEqual(T first, T second) {
    return (!Compare()(first,second) && !Compare()(second,first));
}; 

bool isEqual(T first, T second) {
        return first == second;
};

但使用==是否正确? 如果没有,有什么方法可以做到吗?

1 个答案:

答案 0 :(得分:2)

使用==是不正确的,只是因为实例化类可能不支持此运算符。

至于

  

如果没有,有什么方法可以做到吗?

有 - 你提到的第一种方式。

顺便提一下,如果你的Compare建模二元谓词概念(它可能应该与STL的大部分一致),它应该是

Compare(first, second)

表格

Compare(first)(second)

表示一些仿函数,当给定一个操作数时,返回一些可以在另一个操作数上使用的仿函数。它不太可能是你的意思。