std :: mapを反復する順序はわかっていますか(標準で保証されていますか)?
つまり、std::mapの要素はキーに従ってソートされています。したがって、キーが整数であるとしましょう。からstd::map::begin()をstd::map::end()使用して反復する場合for、標準では、昇順でソートされたキーを持つ要素を結果として反復することを保証していますか? 例: std::map<int, int> map_; map_[1] = 2; map_[2] = 3; map_[3] = 4; for( std::map<int, int>::iterator iter = map_.begin(); iter != map_.end(); ++iter ) { std::cout << iter->second; } これは印刷が保証されています234か、それとも実装が定義されていますか? 現実の理由:私が持っているstd::mapとintキー。非常にまれな状況で、具体的なint値よりも大きいキーを使用して、すべての要素を反復処理します。うん、それstd::vectorはより良い選択のように思えますが、私の「非常にまれな状況」に注意してください。 編集:私は知っている、の要素std::mapがソートされていることを知っています...それを指摘する必要はありません(ここでのほとんどの答えに対して)。私の質問にもそれを書きました。 コンテナーを反復処理するときに、イテレーターと順序について尋ねていました。答えてくれて@Kerrek SBに感謝します。