Vector erase操作 core down
复现代码
for(std::vector<int>::iterator iter=uid.begin(); iter!=uid.end(); iter++)
{
if( *iter == temp_uid) {
iter = uid.erase(iter);
}
}
第一个坑
vector的删除操作会有一个坑,就是删除的时候一定要将删除操作的结果赋值给一个新的迭代器。
因为执行erase操作之后,执行操作的iter会变的无效。这时应该使用erase的返回结果,返回结果是被删除元素的下一个位置。
所以操作必须是这样的
iter = uid.erase(iter);