1
사용자 정의 해시 및 동등 함수가있는 정렬되지 않은지도가 있습니다.C++ : 해시 맵에서 평등 비교 횟수 계산
지도에 모든 요소를 추가 한 후 동등 비교 함수가 호출 된 횟수를 계산하고 싶습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?
을 그리고 완전한지도를 삽입 후 : 사용자 정의 평등 기능에서
사용자 정의 해시 및 동등 함수가있는 정렬되지 않은지도가 있습니다.C++ : 해시 맵에서 평등 비교 횟수 계산
지도에 모든 요소를 추가 한 후 동등 비교 함수가 호출 된 횟수를 계산하고 싶습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?
을 그리고 완전한지도를 삽입 후 : 사용자 정의 평등 기능에서
을 계산 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_ = 0
및
myMap.key_eq().counter_
을 가질 수 있습니다.
'정적'은 필요하지 않습니다. 그리고 OP가 하나 이상의지도를 사용하면 잘못된 결과를 가져옵니다. 정적이 아닌 카운터의 결과는 다음과 같이 얻을 수 있습니다 :'someMap.key_eq(). counter' – PiotrNycz
@PiotrNycz +1 제가 생각하기에 가장 먼저 생각한 것이 맞습니다. 그런 다음 내 대답을 편집하고 싶지만 나는 그것이 이미 시험을 위해 일한다고 생각한다. – BigBoss
@BigBoos 당신은 다음 독자를위한 대안 (또는 더 나은 명제)으로 이것을 항상 추가 할 수 있습니다. 답변은 OP만이 읽을 수 없습니다. – PiotrNycz