我正在尝试使用比较器进行地图的键比较。
std::map<SomePointer,SomeValue, SomeComparator> testMap;
class SomeComparator
{
SomeComparator( ){ }
bool operator()( const SomePointer& sp1, const SomePointer& sp2) const
{
return sp1 == sp2;
}
}
我的问题是我是否需要重载operator()或其他东西以允许map :: find使用适当的比较器来比较两个指针并检索匹配的指针。
答案 0 :(得分:3)
对于地图,您需要提供<
类型的比较 - “严格的弱排序”,具体而言。当A不小于B且B不小于A时,它推导出相等。
但是,要回答您实际问过的问题:如果您提供上述比较器仿函数,则会为该仿函数重载operator()
。否则,您可以为密钥类型重载operator<
。