2016-12-31 1 views
1

私はstd :: unordered_mapを構築し、それを訪問するためにループを使用しました。 繰り返し結果のシーケンスは、どのように挿入しても、それらの要素を作成したシーケンスに要素が配置されていることがわかりました。ループはstd :: unordered_mapをループし、シーケンスは常にシーケンスを挿入する要素ですか?

C++標準のこの部分はunordered_mapであり、訪問されたとき、繰り返しシーケンスは挿入シーケンスですか?これは実装の好みですか?

私はこの機能が、私のC++コードに頼ることができるかどうか知りたいですか?

+1

Dupe of http://stackoverflow.com/questions/3176621/c-is-the-unordered-map-really-unordered –

+0

いいえ、この動作はC++コードに依存できません。 –

+0

一般的には:いいえ!あなたの特定の観察を説明するために:あなたは何をキーとして使用しましたか?サンプルコードを投稿してください。 – MikeMB

答えて

0

号標準は(設定順不同マップ、およびその多値のバージョン)†順不同連想コンテナの要素の順序について保証しませんし、あなたのコード内の任意の特定の順序に依存することはできません。特殊なケース[unord.req]/6(標準草案、強調鉱山)を除き

:それは各キーの最大1つの要素に含まれている可能性がある場合

順不同連想コンテナは、独自のキーをサポートしています。それ以外の場合は、同等のキーをサポートします。 unordered_setとunordered_mapはユニークキーをサポートします。 unordered_multisetおよびunordered_multimapは、同等のキーをサポートします。同等のキーをサポートするコンテナでは、同等のキーを持つ要素は、コンテナの反復順序で互いに隣接しています。したがって、は、順序付けられていないコンテナ内の要素の絶対順序は指定されていない、その要素は、各グループのすべての要素が同等のキーを持つ等価キーグループにグループ化されます。順序付けられていないコンテナに対する突然変異操作は、別段の指定がない限り、各等価キー群内の要素の相対的な順序を保持しなければならない。

関連する問題