对于顺序容器,对其添加或者删除元素,会有迭代器失效的情况。
首先是erase,删除的情况。
假如删除了,进行it++;是肯定会报错的;对于erase,会返回下一个迭代器,避免失效。
iter =cont.erase(iter);
关联容器, 只需要
map<int, string>::iterator tmpIter = iter;
iter++;
dataMap.erase(tmpIter);
神奇的是,erase函数没有对输入的position进行改写
对于insert,要是引起扩容,则迭代器完全失效。
建议,不要用迭代器进行insert操作。
还不是很明白,希望以后能补充。