STL может отобразиться, итератор идут за пределы посредством постепенного увеличения?

обратная функция пригождается здесь:

myArray = [1,2,3,4]
myArray.reverse()
for x in myArray:
    print x
7
задан Mike Lewis 24 August 2009 в 21:07
поделиться

3 ответа

Если вы увеличиваете конечный итератор, результатом будет неопределенное поведение. Итак, он может оставаться концом, или сойти с конца, или отправить по электронной почте вашей бабушке ссылку на goatse.

См. Также: Что, если я увеличу итератор на 2, когда он указывает на последний элемент вектора?

27
ответ дан 6 December 2019 в 04:58
поделиться

Предварительным условием для оператора ++ для прямого итератора является возможность разыменования итератора. Это означает, что он не может быть за концом карты, поэтому ваш код дает неопределенное поведение. Это описано в разделе 24.1.3 стандарта C ++.

11
ответ дан 6 December 2019 в 04:58
поделиться

Как указывали другие, увеличение конечного итератора вызывает неопределенное поведение, однако Стоит отметить, что Visual Studio 2008 выдаст утверждение отладки во время выполнения (из-за проверенных итераторов ), если вы сделаете это.

5
ответ дан 6 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: