Greg
Greg

Reputation: 8915

How to identify whether or not std::unordered_map has experienced hash collisions?

How to identify whether or not the keys in a std::unordered_map have experienced hash collisions?

That is, how to identify if any collision chaining is present?

Upvotes: 7

Views: 1285

Answers (1)

Aerle
Aerle

Reputation: 136

You can use the bucket interface and its bucket_size method.

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;
    }
}

Upvotes: 11

Related Questions