2016-09-11 15 views
0

ダイレクトアドレステーブルの理解に苦労しています。下の画像(ソース:CormerのIntroduction to Algorithms)に基づいて、オブジェクトを格納するための大きな配列を定義します。ストアドオブジェクトのフィールドの1つが整数型である必要があります。その整数は、オブジェクトの配列内の位置を定義します。ここではキーという名前です。利点のダイレクトアドレステーブルを理解する

検索や削除を実行するには、キー(衛星データではありません)を使用するだけです。衛星データを検索する方法はありません。私はこの構造の利点を実際には見ていません。なぜなら、実際の衛星データではなく、常に整数であるキーに基づいた検索だけに制限するからです。このデータ構造を有効にするには、衛星データからキーを計算する方法が必要です。

enter image description here

+0

キーは何でもかまいません。整数である必要はありません。しかし、それはハッシュコードを持っている必要があります。 "satelite"データは設計上検索することができません。 'map:key-> value'の実装です。ここで' key'で高速にアクセスできますが、 'value'ではアクセスできません(同じ複数の値しかし、 'map'のキーではなく' multimap'で両方を持つことができます。両方にアクセスする必要がある場合は、別のデータ構造である双方向マップの実装が必要です。 – amit

答えて

1

すべてのデータ構造は、同時に他の不利ながら、いくつかの操作の場合に利点を可能にする特定の目的のために構築されています。

ダイレクトアドレステーブルでは、キーが指定された値、つまりキーのドメインから値(または内容)の範囲へのマッピングに素早くアクセスできます。キーは、コメントに記載されているように何でもかまいませんが、「ハッシュ可能」でなければなりません。

たとえば、キー値(オフセット)を実際のアドレスにすばやく変換するメモリ変換など、多くの重要な目的に役立ちます。これにより、タグで簡単に作業することができ、変更があった場合(古いものを置き換える新しいアドレス)には、単に翻訳メカニズムを変更するだけで済む。マッピングテーブル(直接アドレステーブルに基づく)。

これが役に立つと思われる状況がいくつかあります。