繁体   English   中英

擦除std :: tr1 :: unordered_map中的元素

[英]Erasing elements in std::tr1::unordered_map

我们可以使用前向迭代来擦除unordered_map中的元素吗?

unordered_map<string, int> employeeTable;
unordered_map<string, int>::iterator it;

for (it = employeeTable.begin(); it != employeeTable.end();) {
   int age = it->second;
   if (age < 18) {
      employeeTable.erase(it++);
   } else {
      ++it;
   }
}

如果以上不正确,标准推荐什么? 像下面的东西

it = employeeTable.erase(it);

根据6.3.1 [tr.unord.req]第12段:

...擦除成员只能使迭代器和对擦除元素的引用无效。

也就是说,上面的代码应该没问题。

是的,您的问题包含正确的答案:

it = employeeTable.erase(it);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM