「コレクション」

マップ

 マップ(map: 連想配列)はキーと値のペアによる順序のあるコレクションである。マップ
は、キーによってソートされる。マップの中のキーはどれもユニークでなければならない。マップには、
キーの型と値の型の両方があり、マップを宣伝する時は両断を指定する必要がある。
マップに要素を追加するには、キーと値を引数として受け取るemplace関数を使う方法が推奨される。
例えば以下のコードでは12月のstd::mapを作るもので、キーは月の番号、値は月名の文字列である。



 ただし、この構文が正しく動作するのは、そのキーがマップにある時だけだ。
キーがマップにあるかを判定するには、find関数を使う、これは、もしもあれば、
その要素へのイテレータを返す。
 std::mapの実装は、内部的に「平衡2分探索木」(balance binary search tree)を使う。
このため、std::mapがキーによって要素を探すのに、O(log n)の時間を要する(対数時間)。
挿入と削除も、対数時間である。2分探索木を使うので、マップの内容に対するループ処理はキー
の昇順で行う。

ハッシュマップ

 通常のマップはキーの昇順を維持するが、ハッシュマップ(hash map)は順序を維持しない。
順序を持たない代わりに、挿入と削除とサーチは、どれもO(1)である。したがって、マップ
が必要だけれど順序は不要だという場合は、ハッシュマップの方が通常のマップよりも性能を得られる。
 C++のハッシュマップである、std::unordered_mapは、順序が保証されないという点を
覗いて、std::mapと同じ関数群を持つ。このハッシュマップクラスを使うには、#include < unordered_map > を使う。

【戻る】