// list
list<int> dataList = { 1,2,3,4,5,6,7,8,9 };
for (auto iter = dataList.begin(); iter != dataList.end();)
{
dataList.erase(iter++);//下面这种方式也可以
//iter = dataList.erase(iter);
}
// map
map<int, int> dataMp = { {1,2},{3,4},{5,6} };
for (auto iter = dataMp.begin(); iter != dataMp.end();)
{
// 两种都可
dataMp.erase(iter++);
iter = dataMp.erase(iter);
}
// vector 只能采用以下方式进行顺序erase
vector<int>data = { 1,2,3,4,5,6,7,8,9 };
for (auto iter = data.begin(); iter != data.end();)
{
iter = data.erase(iter);
}
* 对于vector、deque顺序容器,使用迭代器删除元素后,当前迭代器就失效了,必须通过erase 的返回值来访问之后的元素
* 对于map等关联式容器,可以再删除前通过++来拿到之后的迭代器,删除当前迭代器所指向的元素也不会出现问题,或者通过erase的返回值来获取下一个有效的迭代器
* 对于list也可采用map的这两种方式