Що я маю на увазі, це те, що ми знаємо, що std::map
елементи впорядковані за клавішами. Отже, скажімо, що ключі - цілі числа. Якщо я перейду std::map::begin()
до std::map::end()
використання a 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 за відповідь.
map::upper_bound
щоб знайти крапку, щоб почати ітерацію.