映射比较器运算符重载

时间:2013-01-07 19:15:49

标签: c++ map comparator functor

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

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

class SomeComparator
{
   SomeComparator( ){ }

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

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

1 个答案:

答案 0 :(得分:3)

对于地图,您需要提供<类型的比较 - “严格的弱排序”,具体而言。当A不小于B且B不小于A时,它推导出相等。

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