From the C++ nutshell book:
The most important point to remember about iterators is that they are inherently unsafe.
- V.end() is not a data element
- after v.erase(iterator) the iterator is no longer valid.
- just like pointers into a list.
- Iterators for a vector become invalid when the vector is reallocated: