1. 对于节点式容器(map, list, set)元素的删除,插入操作会导致指向该元素的迭代器失效,其他元素迭代器不受影响
2. 对于顺序式容器(vector,string,deque)元素的删除、插入操作会导致指向该元素以及后面的元素的迭代器失效
for(auto it=se.begin();it!=se.end();)
{
if(*it%2==0)
se.erase(it++);
else
it++;
}
erase删除了it的副本,实际上it已自加至下一个有效迭代器
or(auto it=se.begin();it!=se.end();)
{
if(*it%2==0)
se.erase(it);
else
it++;
}
erase函数会返回指向下一节点的有效迭代器
(++i)运算完成后返回的是对 i加一后的引用,而(i++)运算完成后返回的却是一个临时变量并且该变量保存了i未进行加一前的数据。