std::unordered_map
의 키에 해시 충돌이 발생했는지 확인하는 방법은 무엇입니까?std :: unordered_map에 해시 충돌이 발생했는지 여부를 식별하는 방법은 무엇입니까?
즉, 충돌 체이닝이 있는지 확인하는 방법은 무엇입니까?
std::unordered_map
의 키에 해시 충돌이 발생했는지 확인하는 방법은 무엇입니까?std :: unordered_map에 해시 충돌이 발생했는지 여부를 식별하는 방법은 무엇입니까?
즉, 충돌 체이닝이 있는지 확인하는 방법은 무엇입니까?
bucket interface 및 그 bucket_size
방법을 사용할 수 있습니다.
std::unordered_map<int, int> map;
bool has_collision = false;
for(size_t bucket = 0; bucket < map.bucket_count(); bucket++) {
if(map.bucket_size(bucket) > 1) {
has_collision = true;
break;
}
}
두 요소가 동일한 버킷에있는 경우 해시 충돌이 있음을 의미하지 않습니다. –
@Revolver_Ocelot - 확실합니다. 그것은 충돌의 정의입니다. –
나는 어떤 경우에는 정책을 시행하고 싶다고 생각하고, unordered_map에게 클라이언트 코드에서 강제로 시행하지 않도록 요청하십시오. max_load_factor 멤버 함수가 밑에있는 문제를 해결하는지 확인하십시오. –