連想配列

連想配列（れんそうはいれつ、）とは、コンピュータプログラミングにおいて、添え字にスカラー数値以外のデータ型(文字列型等)も使用できる配列である。抽象データ型のひとつ。連想リスト、連想コンテナ、辞書（あるいはカタカナでディクショナリ ）、ハッシュ（）、マップ（）とも呼ばれる。
歴史的には、最初に の連想リストとして広く認知された。その後、 で codice_1 として、 で連想配列として実装したことで、その潜在能力がさらに広く知られるようになった。現在、 など一部の言語では、添え字にはどのようなデータでも使えるものもある。
概要.
プログラミングにおける単純な配列は、特定のアドレスからのオフセット（ずれ）をインデックスとして、アドレスとオフセットによって目的の値を得る。これに対し連想配列では、要素とそれを紐付けできるような値（キーと呼ぶ）のペアで表され、キーによって目的の値を求める。辞書やディクショナリという呼び方は、要素を本文、キーを見出しになぞらえたものと言える。ハッシュという呼び名はハッシュテーブルによって実装されることによる。
データ構造.
連想配列の実装に使われるデータ構造としては、主に平衡2分探索木（赤黒木やAVL木など）やハッシュテーブルがある。ほかにはB木や連想リスト、トライ木、基数木などが利用されることもある。純粋な連想配列においてはキーの重複があってはならない。マップ（連想配列）を拡張したマルチマップはキーが重複したデータも上書きせずに保持できるデータ構造である。
連想配列を一般化したデータ構造のひとつにマルチマップ（）があり、一つのキーに対して複数の値を格納することができる。また別の一般化である双方向マップ(、、)はバインディング操作を双方向で行う（キーと値に全単射関係をもたせる）データコンテナである。双方向マップの値それぞれが重複のないキーに関連付けられなければならない。キーを引数に取る通常の連想配列におけるlookup操作の他に値を引数にとるlookup操作が追加され、この操作は引数として与えられた値に関連付けられたキーを検索する。
よく用意される命令.
純粋な連想配列でのキー–値間の参照を束縛（またはバインディングとも）と呼ぶ。「束縛」という語は新たな参照を作る過程に対しても用いられる。
しばしば定義される操作は以下のようなものが挙げられる:
また、連想配列はここで上げた以外の操作も含む。それは例えばキーの束縛数を特定したりすべてのキーを調べるための反復子を作成したりといったものである。この反復子によって得られる参照の順序はしばしば不定となる。