0

我正在尝试使用 Comparator 进行地图的关键比较。

std::map<SomePointer,SomeValue, SomeComparator> testMap;

class SomeComparator
{
   SomeComparator( ){ }

   bool operator()( const SomePointer& sp1, const SomePointer& sp2) const
   {
      return sp1 == sp2;
   }
}

我的问题是我是否需要重载 operator() 或其他东西以允许 map::find 使用适当的比较器来比较两个指针并检索匹配的指针。

4

1 回答 1

3

对于地图,您需要提供一种<比较类型——具体来说是“严格的弱排序”。当 A 不小于 B 且 B 不小于 A 时,它推论相等。

但是,要回答您实际提出的问题:如果您提供上述比较器函子,则operator()该函子会超载。否则,您可以重载operator<您的密钥类型。

于 2013-01-07T19:18:41.840 回答