迭代器失效的原理是什么解决办法

迭代器失效的原理是什么
对于vector容器,假设有迭代器it1指向容器中第三个元素,it2指向第四个元素。那么,现在我用erase(it1)删除第三个元素,为什么it1,it2会失效呢。
我是这样想的,当第三个元素被删除时,it1指向的的地址 存储了移上来的第四个元素,it2指向了移上来的第五个元素。但事实是,it1,it2和指向之后元素的迭代器都失效了;那我就不能懂了,我的想法是建立在vector是连续存储的基础上的。
求解释。

还有deque容器为什么可以在首尾部不断的插入,而不会有重新加载的问题。

两个疑惑,求解释

------解决方案--------------------
探讨
引用:
你用啥编译器

用VS2005没问题


vs2008啊 这跟编译器有关系吗