2012-10-28 5 views
1

사용자 정의 해시 및 동등 함수가있는 정렬되지 않은지도가 있습니다.C++ : 해시 맵에서 평등 비교 횟수 계산

지도에 모든 요소를 ​​추가 한 후 동등 비교 함수가 호출 된 횟수를 계산하고 싶습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?

을 그리고 완전한지도를 삽입 후 : 사용자 정의 평등 기능에서

답변

2

을 계산 equality_comparer::counter_ = 0. @PiotrNycz에서 언급 한 바와 같이

이를 사용할 수 있습니다

struct equality_comparer : std::binary_function<MyType, MyType, bool> { 
    mutable int counter_; 
    //^^^^^^^ 
    equality_comparer() : counter_(0) {} 
    bool operator()(MyType const& lhs, MyType const& rhs) { 
     ++counter_; 
     return lhs == rhs; 
    } 
    void reset_counter() {counter_ = 0;} 
}; 

는 그런 다음 카운터 값에 액세스 할 수 myMap.key_eq().reset_counter() 대신 이전 코드에서 equality_comparer::counter_ = 0myMap.key_eq().counter_을 가질 수 있습니다.

+1

'정적'은 필요하지 않습니다. 그리고 OP가 하나 이상의지도를 사용하면 잘못된 결과를 가져옵니다. 정적이 아닌 카운터의 결과는 다음과 같이 얻을 수 있습니다 :'someMap.key_eq(). counter' – PiotrNycz

+0

@PiotrNycz +1 제가 생각하기에 가장 먼저 생각한 것이 맞습니다. 그런 다음 내 대답을 편집하고 싶지만 나는 그것이 이미 시험을 위해 일한다고 생각한다. – BigBoss

+0

@BigBoos 당신은 다음 독자를위한 대안 (또는 더 나은 명제)으로 이것을 항상 추가 할 수 있습니다. 답변은 OP만이 읽을 수 없습니다. – PiotrNycz