64,642
社区成员
发帖
与我相关
我的任务
分享
//以下代码只会删除第一个2,第二个2被++it跳过删除。
std::vector<int> v{1,2,2,3,4,5,6,7,8};
auto it = v.begin();
while(it != v.end()){
if(*it == 2){
v.erase(it);
}
++ it;
}
for(auto it:v){
std::cout<<it <<" "; //结果 1 2 3 4 5 6 7 8
}
//删除8之后,it已经指向了v的end,再++it就越界了。
std::vector<int> v{1,2,2,3,4,5,6,7,8};
auto it = v.begin();
while(it != v.end()){
if(*it == 8){
v.erase(it);
}
++ it;
}