小编Mbr*_*roo的帖子

C++ 地图容器erase() 分段错误

我使用此代码从地图容器中删除等于某个 int 的元素。

for(auto x:m){
  if((x.second)==element)m.erase(x.first);
}
Run Code Online (Sandbox Code Playgroud)

结果是分段错误。我也试过这个:

for(map<int,int>::iterator i=m.begin();i!=m.end();i++){
  if((i->second)==element)m.erase(i);
}
Run Code Online (Sandbox Code Playgroud)

结果一样。如果将 i++ 放入 if/else 程序将冻结/循环或其他什么。我怎样才能解决这个问题?

c++ stdmap

0
推荐指数
1
解决办法
225
查看次数

标签 统计

c++ ×1

stdmap ×1