簡體   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