无序多集的散列/ crc算法

gsf*_*gsf 5 c++ algorithm hash crc

假设我想创建一组无序的无符号整数的多重集合.为此,我需要创建一个哈希函数来计算无序多集的哈希值.事实上,它也必须对CRC有利.

一个显而易见的解决方案是将项目放在向量中,对它们进行排序并返回结果的哈希值.这似乎有效,但它很昂贵.

另一种方法是对值进行xor,但显然如果我有一个项目两次或没有结果将是相同的 - 这是不好的.

任何想法如何实现这个更便宜 - 我有一个应用程序将成千上万套,相对较大的应用程序.

Ste*_*ein 0

将内部多重集实现为值->计数哈希映射。

\n\n

这将使您能够避免偶数个元素通过异或以下列方式抵消的问题:\xc2\xa0不是对每个元素进行异或,而是根据计数和值构造一个新数字(例如将它们相乘) ,然后您可以使用异或构建完整的哈希。

\n