std :: map의 키 유형으로 자체 클래스를 사용합니다. 두 객체가 동등 할 때지도 구현이 어떻게 결정합니까?C++ STL map :: find()
요소를 배열하기 위해 연산자 < 또는 Comp 유형을 결정할 수 있음을 알고 있습니다. 그러나 나는 평등에 관해서 아무것도 찾을 수 없다.
std :: map의 키 유형으로 자체 클래스를 사용합니다. 두 객체가 동등 할 때지도 구현이 어떻게 결정합니까?C++ STL map :: find()
요소를 배열하기 위해 연산자 < 또는 Comp 유형을 결정할 수 있음을 알고 있습니다. 그러나 나는 평등에 관해서 아무것도 찾을 수 없다.
operator<
을 사용하여 비교를 할 수 있으므로 operator==
을 정의 할 필요가 없습니다. 기본적으로 하나가 다른 하나보다 적지 않고 다른 하나가 첫 번째보다 작지 않으면 평등해야합니다. 객체가 동일한 경우
bool isEqual(const Type &arg1, const Type &arg2) const {
return !(arg1 < arg2) && !(arg2 < arg1);
}
는 std::map<K, V, Comp>
클래스가 실제로 확인하지 않습니다 : 이것은의 가능한 유틸리티 기능의 구현입니다! 두 개의 오브젝트가 Compo
의 기본 정의, std::less<K>
즉, 클래스 어느 객체가 다른 것보다 작은 것으로 동등한 결정
Comp comp;
if (!comp(a, b) && !comp(b, a)) {
// a and b are in the same equivalence class
}
하여 결정 동일한 등가 클래스에 속해있는 경우가 관심 모두이다.
아, 나는 비교를 선택할 수 있다는 것을 잊어 버렸습니다. 그것은 항상 포함하는 것이 좋습니다. – chris
'! (a chris
@chris 대답은 대답이 아닙니다 :) – dasblinkenlight