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