擦除 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);
相关文章:
- 为什么在 std::map 上移动无法将元素从一个映射移动到另一个映射
- 使用 map.end() 访问 map 的最后一个元素
- std::map:当元素不可默认构造时创建/替换元素
- 类中的 C++ 全局映射,不要打印 map 元素
- 使用 at() 访问 std::map 元素是否比运算符 [] 慢?
- 在 std::map 中插入数组元素
- 如果键不存在,使用 [] 运算符访问 STL Map 元素会添加新元素
- 为什么 memcpy() 是一种将元素添加到 'std::map' 的方法?
- 如何仅根据第二个元素对map<int,pair<int,int> >进行排序?
- 添加和初始化新std::map元素的最有效方法是什么
- C++测试map元素是否存在
- 获取std::map元素的有效方法是在容器中删除一个元素
- std::priority_queue,带有std::map元素的迭代器-无效堆
- 不能设置std::map元素
- c++中最常用的map元素
- map元素在内存中是固定的吗?
- 如何将 std::map 元素从一个减去到另一个并在 C++ 中更新它
- 如何在迭代时更改std::map元素
- 如何在带有input的map元素方法上使用std::for_each
- 试图使用运算符[]访问std::map元素时编译器错误