2013-01-07 3 views
0

지도의 키 비교에 Comparator를 사용하려고합니다.지도 비교 연산자 오버로드

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<을 오버로드 할 수 있습니다.