-2

std::map での順序を理解しようとしています。

http://www.cplusplus.com/reference/map/map/

内部的には、マップ内の要素は常に、(Compare 型の) 内部比較オブジェクトによって示される特定の厳密な弱い順序付け基準に従って、そのキーによって並べ替えられます。

私がこれを行う場合:

   myMap["two"] = 2;
   myMap["three"] = 3;
   myMap["one"] = 1;

を反復myMap処理し、値を出力します。出力はどうなりますか?

要素が追加された順序になっているコンテナを探しています。この場合、反復のために出力 2、3、1 が期待されます。

4

2 に答える 2

2

vector/FIFO キューは、マップがオブジェクトを内部に格納する方法や、目の前のジョブにとってより複雑なデータ構造でコードを肥大化させることを心配する必要なく、単にあなたが望むことを行います.

std::queue は FIFO キューです

于 2013-03-19T12:50:43.073 に答える
1

例の順序は、の定義によって異なりますstd::mapstd::map4 つのテンプレート パラメータを持つテンプレートであることに注意してください。

std::map< Key, Value, Compare, Allocator >

3番目は注文にとって重要です。があるとするとstd::map< std::string, int >、3 番目のパラメータのデフォルトは です。これはCompare、キー (タイプは ) が と比較されることを意味します。したがって、あなたの場合の順序はとです。std::less< Key >std::less< std::string >std::string<1, 3, 2std::string("one") < std::string("three")std::string("three") < std::string("two")

他の人がすでに指摘したように、シーケンス コンテナーをモデル化する別のコンテナーを探しています。

于 2013-03-19T13:00:04.867 に答える