什么是迭代器失效(vector扩容)。
迭代器失效就是因为扩容,删除元素等缘故,导致原先容器的空间变化,进而导致迭代器(begin()和end())发生了变化,从而失效
.当插入(push_back)一个元素后,end操作返回的迭代器肯定失效,因为vector只允许从尾插。
当插入(push_back)一个元素后,capacity返回值与没有插入元素之前相比有改变,则需要重新加载整个容器,此时begin和end操作返回的迭代器都会失效、
List/set/map迭代器的失效情况:
删除时,指向该删除节点的迭代器失效,
其它任何增加、删除元素的操作都不会使迭代器失效。
总之道理就是这样的。源码真的是不好看,就不看了