告诉std::unordered_map散列函数是完美的



是否可以告诉std::unordered_map散列函数是完美的?

因此,如果两个不同的键产生相同的散列码,它们就会编辑相同的内存槽。

哈希函数是不够的。生成不同哈希值的值可能被映射到哈希表中的同一个槽。例如,容器的大小可能是11,其中一个哈希值可以是12,另一个可以是23。假设容器使用模数运算符来映射这些值,那么它们都将映射到槽号1。所以,你需要一种方法来区分这些以后

您可以将std::unordered_mapKeyEqual模板paraemer设置为[](const auto& l,const auto& r){return true;},因为它只应在哈希比较相等时使用。

使operator==与散列而不是属性进行比较,将导致std::unordered_map假设它们相等。

最新更新