2


1

必要な機能だけがある場合は、キーと値のペアを格納するために使用するデータ構造を決定しようとしています

  • 挿入

  • 見上げる

特に、ペアを削除したり、キー/値/ペアを反復処理する必要はありません。

キーは整数タプルで、値はポインタです(参照など)。 私は格納しているのは、(たくさんの)オブジェクトに広がる数百万のペアだけです。

現在私はどちらかを使用することを検討しています

  • ハッシュテーブル

  • kdツリー

  • Bツリー

私はハッシュテーブルに傾いています( `O(1)`挿入/検索時間のために)が、私は自分の傾倒を確認したいと思いました。

どの構造(上記または他の構造)を推奨しますか。またその理由は何ですか。 ハッシュテーブルをお勧めする場合は、オブジェクトごとに別々のテーブルを作成するのか、それとも単一のテーブルを作成してキータプルの一部としてオブジェクトのIDを使用するのか。

4 Answer


4


あなたにとって重要な操作はすべてO(1)なので、ハッシュテーブルはここでは最良の選択となります(したがって、複数のハッシュテーブルを作成することを心配する必要はないはずです)。


1


私はハッシュテーブルが大好きです。ハッシュテーブルは簡単で、ほとんどすべての主要言語で利用できる実装があるからです。 O(1)挿入/検索は特に優れた機能です。

あなたはおそらくメモリを節約するために単一のテーブルを使うべきです。 ハッシュテーブルはメモリに関して非効率的であることで有名です。単一のテーブルを使用すると、それを最小限に抑えることができます。


1


ここではハッシュテーブルが役に立ちますし、複数のテーブルを持つ必要はありません。


0


ほとんどのツリーにはO(n ln n)の検索時間がありますが、ハッシュテーブルにはO(1)の検索時間があるので、それを使用したいものです。 それはまた非常に一般的です、そしてしばしば実装はブートするために非常に最適化されています。