一:要删除容器中有特定值的所有对象
如果容器是vector,string 或 deque,使用erase-remove 习惯用法
如果容器是List,则使用List::remove.
如果容器是标准关联容器,则使用它的erase成员函数。
vector<int> vi;
vi.earse(remove(vi.begin(),vi.end(),7),vi.end());
二:要删除容器中满足特定判定式的所有对象:
如果容器是关联容器,记住当把迭代器传给erase时,要对他进行后缀递增。
如果是vector,则使用erase-remove_if;
三:要在循环内部做某些操作
如果容器是标准序列容器,则写一个循环来遍历容器中的元素,记住每次调用erase时,要用它的返回值更新迭代器。
for(){
if(true){
i = vi.erase(i);
}else {
++i;
}
}
如果容器是标准关联容器,则传给erase时对迭代器做后缀递增。
for(){
if(true) {
vi.erase(i++)
}else i++;
}