我们可以使用前向迭代来擦除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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果以上不正确,标准推荐什么?像下面的东西
it = employeeTable.erase(it);
Run Code Online (Sandbox Code Playgroud)
根据6.3.1 [tr.unord.req]第12段:
...擦除成员只能使迭代器和对擦除元素的引用无效.
也就是说,上面的代码应该没问题.
| 归档时间: |
|
| 查看次数: |
2446 次 |
| 最近记录: |