2013-01-07 78 views
0

我想使用比較器進行地圖的關鍵比較。地圖比較運營商超載

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

class SomeComparator 
{ 
    SomeComparator(){ } 

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

我的問題是我是否需要重載運算符()或別的東西使地圖::找到使用適當的比較來比較兩個指針和檢索匹配的一個。

+3

比較器應該返回true,如果第一個參數<第二個參數,不是==。除此之外,不。 –

回答

3

對於地圖,您需要提供一個<比較類型 - 「嚴格弱排序」,具體說明。當A不小於B並且B不小於A時,它推導出相等性。

但是,要回答你實際提出的問題:如果你提供了上面的比較函數,那麼你爲該函子重載operator()。否則,您可以爲您的密鑰類型重載operator<