Что я имею в виду - мы знаем, что элементы 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
будет лучшим выбором, но заметьте мои "очень редкие ситуации".
EDIT: Я знаю, что элементы std::map
отсортированы. Не нужно указывать его (для большинства ответов здесь). Я даже написал это в своем вопросе.
Я спрашивал об итераторах и порядке, когда я повторяю контейнер. Спасибо @Kerrek SB за ответ.