for (auto&& i : unordered_container)
{ /* ... */ }
for (auto&& i : unordered_container)
{ /* .. */ }
Требуется ли стандарту, чтобы обе эти петли посещали элементы в одном порядке (при условии, что контейнер немодифицирован)?
Мой анализ этого вопроса...
Я прочитал стандарт и, насколько я могу сказать, ответ "нет"...
Поскольку итераторы контейнеров пересылаются вперед, существует язык, для которого требуется a==b
подразумевать, что ++a==++b
для форвардных итераторов. Это означает, что две итерации пройдут один и тот же путь, если оба они начнут в одном и том же месте. Это сводит вопрос к другому вопросу о том, требует ли стандарт container.begin() == container.begin()
. Я не мог найти какой-либо язык, требующий этого.