0

最初に少し背景を説明します。データ構造に一連のポインターを格納しようとしていて、値を検索したいと考えています。順番通りのアクセスは気にしません。検索目的で構造をツリーに格納したいと思いますが、malloc は単純なツリーの異常な動作につながる連続したアドレスを生成する傾向があります。ポインターをある種の自己均衡ツリーに格納できることは知っていますが、それを実装するためのライブラリがありません。バニラCはこちら だから私がしたいのは、保存したいポインターのビットを混ぜ合わせて、単純なツリーを実装して病的なケースを回避できるようにすることです。

最上位のビットはすべて同じである可能性が高く、最下位のビットは多くの場合ページで整列されるため、最下位のビットはしばしば null になるため、ビットをうまく混合するものが必要です。

大量のオーバーヘッドなしで適切なミキシングを生成する優れたスキームはありますか?

4

1 に答える 1

1

大きな奇数値を乗算するだけで十分な場合があります(uintptr_t) ptr * 0xcba9876543210fed孫子の定理により、一意の入力値のイメージは一意です。

乗数の選択と代替案について他の人にコメントしてもらいます。

于 2013-03-20T19:09:32.293 に答える