つまり、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に感謝します。
map::upper_boundでは、反復を開始するポイントを見つけるために使用できます。