Iterators are useful to deal with data inside a container: they point to one of its element and can be incremented or decremented to access other elements of this container. However, they can be invalidated when their container is modified.
For example, iterators of ``++std::vector++`` are invalidated after an insertion which changed the capacity of the container, or if they point after an element of the ``++std::vector++`` which has just been erased.
Once an iterator has been invalidated, you can only assign a new value to it, but you should not increment, decrement or dereference it.