2016-09-11 13 views
0

C++でマルチマップの等価範囲を使用しています。私の場合、同じキー(マルチマップ)に対して複数のエントリが存在する可能性があります。返されたイテレータが定義された順序でアイテムを配送するのか、それともSTLの実装者に残されているのだろうかと思います。例えば、私はマルチマップにA B C D E F C X Y Z C M N A等 を挿入し、イテレータが私にアタッチキーを返す順番を知りたいと思っています。それらが挿入された順序?最後に最初に挿入された?定義されていません? 私はちょうど注文を知るために余分な情報を保存することを避けようとしています。私の場合、それはC++であっても、C++ 11でさえありません。ありがとう、Victorequal_range C++要素の順序

答えて

1

既存のキーの後ろに重複キーが挿入されるため、要素の順序が維持されます(言語仕様の「連想コンテナ」を参照)。

+0

こんにちは1201ProgramAlarmとありがとうございます。多分私は目が見えませんが、 – user612514

+0

私はN3690(第23章?)を見ていて、関連するものは何も見つかりません。私は、RBツリーまたはAVLツリーのいずれもunsingするマルチマップ実装について認識しています。私の理解では、マルチマップのすべての格納/検索/反復は、与えられた "less"関数に基づいているため、与えられた答えに困惑しています。私の質問は、iterator equal_range要素のすべてが同じ値を持つので、保証された順序(すべての実装で守らなければならない)があるかどうかです。申し訳ありませんが私はあなたのポイントを逃した場合。 Regular、Victor – user612514

+0

@ user612514 N4527のセクション23.2.4 [associative.reqmts]、テーブル101、 'a_eq.emplace'と' a_eq.insert'の説明。 (これはN3242の表102で、N3690はありません)。 – 1201ProgramAlarm

関連する問題