unordered map c++ 在循环中删除元素
unordered map c++ 在循环中删除元素unordered_map为无序容器,所以在循环的直接删除,会导致当前iterator失效,后面的元素无法访问。这是一个解决该问题的示例。unordered_map<int,int> m;for(int i = 0; i < 7; ++i){m.emplace(i,i);}...
·
unordered map c++ 在循环中删除元素
unordered_map为无序容器,所以在循环的直接删除,会导致当前iterator失效,后面的元素无法访问。
对于无序容器来说,erase只是导致当前iterator失效,对之后并无影响。erase返回值为void。
这是一个解决该问题的示例。
unordered_map<int,int> m;
for(int i = 0; i < 7; ++i){
m.emplace(i,i);
}
unordered_map<int, int>::iterator it = m.begin();
while(it != m.end()){
cout << it->second << endl;
if(it->first == 6)
m.erase(it++);
else
it++;
}
更多推荐
已为社区贡献1条内容
所有评论(0)