0

首先有一点背景知识,我试图将一堆指针存储在数据结构中,并且我想查找值。我不在乎按顺序访问。我想将结构存储在树中以进行查找,但是 malloc 倾向于产生顺序地址,这会导致简单树的病态行为。我知道我可以将指针存储在某种自平衡树中,但我没有库来为我实现它。香草C在这里。所以我想做的是混合我想存储的指针的位,这样我就可以实现一个简单的树并避免病态的情况。

我需要一些能很好地混合这些位的东西,因为最高位可能都是相同的,而最低位通常是页面对齐的,因此最低位通常为空。

有什么好的方案可以在没有大量开销的情况下产生体面的混合?

4

1 回答 1

1

乘以一个大的奇数值可能就足够了:(uintptr_t) ptr * 0xcba9876543210fed. 根据孙子定理,唯一输入值的图像是唯一的。

我邀请其他人评论乘数的选择和替代方案。

于 2013-03-20T19:09:32.293 回答