Я имею в виду, что мы знаем, что 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
чтобы найти точку для начала итерации.