4

vectorは整数キーを持つunordered_mapの特殊な形式ですか?ベクトルにも整数キーがあるのでそう思われます。

そうでない場合、違いは何ですか?

4

2 に答える 2

6

主な違いは、データの保存方法です。

vectorデータを内部配列に格納し、サイズを変更して要素を追加します。Anunordered_mapは内部でハッシュ テーブルを使用します。

実際には、avectorを使用すると、後方で償却された一定時間の挿入 (時々すべてのサイズを変更してコピー/移動する必要があります)、インデックスによる一定時間のアクセス、および線形時間の挿入と削除 (後続のすべての要素が必要です) が可能になります。シフト)。また、avectorは連続しているため、C スタイルの配列を期待する関数に渡すことができます。

unordered_mapキーによる償却された一定時間のルックアップ (ハッシュは完全ではなく、衝突によりルックアップが内部リンクリストを通過するように強制されるため)、償却された一定時間の挿入と削除が提供されます。

参照: http://en.cppreference.com/w/cpp/container/unordered_map および: http://en.cppreference.com/w/cpp/container/vector

于 2012-12-18T10:58:51.857 に答える
3

いいえ、aのインデックスvectorは連続的であるmap必要はありません。

また、aの値は、vectorではなく連続メモリにあることが保証されていmapます。

これらの2つは、2つの操作のほとんどで異なる複雑さを意味します。

于 2012-12-18T10:52:09.377 に答える