-4

C#に関しては、ハッシュテーブルと辞書の違いを知っています。

  • ハッシュテーブル タイプはルックアップを最適化します。追加した各キーのハッシュを計算します。次に、このハッシュ コードを使用して要素をすばやく検索します。

  • Dictionary 型は、値を取得するためのキーを使用した高速検索を提供します。これにより、int や文字列を含むあらゆるタイプのキーと値を使用できます。

ディクショナリ オブジェクトは C# で型の安全性を提供しますが、ハッシュ テーブルは提供しません。

C言語に関しても同様の違いがあるかどうか知りたいですか?

4

2 に答える 2

10

C#に関しては、ハッシュテーブルと辞書の違いを知っています。

C# でもハッシュ テーブルとディクショナリを理解していないことを納得させます。

Dictionary はAbstract Data Typeです。Dictionary は、キーから値へのマッピングを提供する任意のデータ構造を参照できます。

一方、ハッシュテーブルは具体的なデータ構造です。ハッシュ テーブルは、ハッシュ関数を使用してキーを内部配列のインデックスに変換し、衝突を解決します。

ハッシュ テーブルは、キーから値へのマッピングを提供するため、一種のディクショナリです。ただし、すべてのディクショナリがハッシュ テーブルであるとは限りません。キーから値へのマッピングを提供するデータ型を作成する方法は無限にあります。たとえば、バイナリ サーチ ツリーを使用したり、偶数インデックスにキーと奇数インデックスに値を持つ並べ替えられた配列として作成したりできます。

つまり、Dictionary について話しているときはインターフェイス (データ型が外部からどのように見えるべきか) を指定しているのに対し、HashTable について話しているときは実装 (データが実際にどのように格納されるべきか) を指定しています。 .

C# は、ドキュメントで Dictionary クラスの特定の具体的なデータ構造を指定することにより、これを少し混乱させますが、2 つの概念の違いを理解することを妨げてはなりません。C の標準ライブラリにはディクショナリもハッシュテーブルも実装されていませんが、ディクショナリとハッシュ テーブルの違いは言語に依存しません。

于 2013-09-09T04:23:39.190 に答える
0

C のハッシュ テーブル ハッシュの考え方は、エントリ (キーと値のペア) をバケットの配列全体に分散させることです。

index = f(key, array_size)

C のディクショナリ C プログラミング言語は、単純なディクショナリ (ハッシュ テーブル) データ構造を提供します。

したがって、唯一の違いは、ハッシュ テーブルがキーと値のペアを使用しているのに対し、ディクショナリはそのデータ構造を使用していることです。

于 2013-09-09T04:18:27.920 に答える