Да, если S
не изменено. [Container.requirements.general] p6:
begin()
возвращает итератор, ссылающийся на первый элемент в контейнере.
Использование определенной статьи "the" подразумевает, что есть только один такой "первый элемент". Следовательно, несколько вызовов begin()
в одном (неизменном) контейнере должны возвращать итераторы, ссылающиеся на один и тот же элемент.
Кроме того, все контейнерные итераторы должны быть как минимум прямыми итераторами (см. Таблицу 64 в том же подпункте).
Остальное не соответствует требованиям для прямого итератора в [forward.iterators], в частности:
- два разыменовываемых итератора сравнивают равные тогда и только тогда, когда результаты разыменования их связаны с одним и тем же объектом; и
- увеличение двух равных итераторов дает равные итераторы.
Поскольку вы начинаете с одинаковых итераторов, каждый шаг итерации должен создавать одинаковые итераторы, которые должны ссылаться на один и тот же элемент в контейнере.