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++;
    }
      
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐