c++ - 如何识别 std::unordered_map 是否发生哈希冲突?

标签 c++ stl collision unordered-map hash-collision

如何识别 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;
    }
}

关于c++ - 如何识别 std::unordered_map 是否发生哈希冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137811/

相关文章:

c++ - std::vector<float> 和 double* - 这有多安全?

c++ - 克服 C++ 中错误的内存分配

C++11 std::generate 和 std::uniform_real_distribution 调用两次给出了奇怪的结果

c++ - 如何移动多个矩形作为碰撞响应?

c++ - std::vector 大小?

c++ - Qt iOS 如何从可执行文件中排除资源以满足应用商店限制

c++ - 二进制字符串到 C++ 中的 byte[]?

c++ - 链接 libfreeimage/libtiff 时的 CMake/错误

android - LibGdx 冲突

python - pygame 坠落碰撞导致玩家上下振荡