세 번째 매개 변수 KeyEqual
의 목적은 std::unordered_set
에 무엇입니까? 해시 고유성이 충분하지 않습니까?std :: unordered_set의 KeyEqual은 무엇입니까?
template<
class Key,
class Hash = std::hash<Key>,
class KeyEqual = std::equal_to<Key>,
class Allocator = std::allocator<Key>
> class unordered_set;
이 질문이 순진하게 들리면 죄송합니다. 파이썬/PHP에서 C++로 옮기기 :)
현재로서는 KeyEqual
의 구현은 항상 Hash
impl을 복제합니다. 그래서 제대로했는지 궁금합니다.
해시 충돌에 대해 들어 본 적이 없습니까? 두 객체가 동일한 해시를 생성하면 동등성 술어가 동등성을 비교하는지 여부를 결정하는 데 사용됩니다. – Praetorian
해시 독창성은 충분합니까? 당신의 키가 int이고 해쉬 함수가'[] (int i) {return i % 10; }'? –
['unordered_set'] (http://www.cplusplus.com/reference/unordered_set/unordered_set/) 문서의 문제점은 무엇입니까? 이전 코멘트의 해시 충돌은 이유 N 1이지만 거의 모든 컨테이너가 비교 작업의 사용자 정의를 허용합니다. yu가 키를 비교할 수있는 방법이 필요하거나 비교 연산자가 없으면 키 유형을 사용하면 어떻습니까? – mvidelgauz