[英]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.