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