Короче говоря, вы должны иметь возможность открыть файл HTML в вашем браузере. Тем не менее, вы можете ничего не видеть (пусто), если ваш HTML не правильно отформатирован.
Зависит от контейнера. например если это вектор
, после изменения контейнера все итераторы могут быть признаны недействительными. Однако, если это список
, итераторы, не относящиеся к измененному месту, останутся действительными.
Итераторы вектора становятся недействительными, когда его память перераспределяется. Кроме того, вставка или удаление элемента в середине вектора делает недействительными все итераторы, которые указывают на элементы, следующие за точкой вставки или удаления. Отсюда следует, что вы можете предотвратить недействительность итераторов вектора, если вы используете
reserve ()
для предварительного выделения того объема памяти, который будет когда-либо использовать вектор, и если все вставки и удаления находятся на конце вектора. [1]Семантика аннулирования итератора для
deque
следующая.Вставка
(включаяpush_front
иpush_back
) делает недействительными все итераторы, которые ссылаются на двухстороннюю очередь.
Стирание
в середине двухсторонней очередиделает недействительными все итераторы, которые ссылаются на двухстороннюю очередь
.
Удаление
в начале или концедвухсторонней очереди
(включаяpop_front
иpop_back
) делает итератор недействительным, только если он указывает на удаленный элемент. .[2]
List
имеют важное свойство, заключающееся в том, что вставка и объединение не делают недействительными итераторы для элементов списка, и что даже удаление делает недействительными только итераторы, которые указывают на удаляемые элементы. [3]
Карта
имеет важное свойство, заключающееся в том, что вставка нового элемента в картуне делает недействительными итераторы, указывающие на существующие элементы. Удаление элемента с карты также не делает недействительными итераторы, за исключением, конечно, итераторов, которые фактически указывают на удаляемый элемент. [4] (то же самое для
set
,multiset
иmultimap
)
Это зависит от рассматриваемой коллекции. Например, изменение std::vector
(например, добавление элемента куда-либо) может сделать недействительными все итераторы в этом векторе. В отличие от этого, с std::list
итераторы остаются действительными, когда вы добавляете другой элемент в список. В некоторых случаях правила являются еще более сложными (например, если память служит с помощью std::deque
, добавление в начало или конец оставляет существующие итераторы действительными, но добавление в любом другом месте может сделать их недействительными - но моя память недостаточно Вы должны проверить, прежде чем зависеть от этого).
Нет, итераторы хороши, только если итерируемый контейнер не изменился. Если коллекция изменена, итератор должен быть получен заново.