小编Pra*_*ngh的帖子

在 C++ stl 映射中遍历时擦除会导致运行时错误

以下 C++ 代码行给出了运行时错误,但如果删除了擦除操作,mymap.erase(v)则它可以工作:

map<int,int> mymap = {{1,0},{2,1},{9,2},{10,3},{11,4}};
for(auto it=mymap.rbegin();it!=mymap.rend();){
    int v=it->first;
    ++it;
    mymap.erase(v);
}
Run Code Online (Sandbox Code Playgroud)

演示

这里迭代器it在删除它的 value 之前被改变v,所以it我相信迭代器应该不受影响。

c++ iterator stl stdmap

5
推荐指数
2
解决办法
98
查看次数

标签 统计

c++ ×1

iterator ×1

stdmap ×1

stl ×1