提问者:小点点

一种存储临时变量的无序映射擦除方法


对于unordered_map erase(),我看到一些线程建议了不同的执行方法(比如从erase()的返回中获取下一个元素)。然而,我没有看到有人提出以下建议。因此,我想知道这种方法是否存在一些问题:

for (auto it1 = map.begin(); it1 != map.end(); )
{
   auto it2 = it1++; //it2 assigned before it1 incremented
   map.erase(it2);
}

共1个答案

匿名用户

这种方法很好用。只使被擦除元素的迭代器无效,其他迭代器不会无效。这意味着增量迭代器仍然有效。

对被擦除元素的引用和迭代器无效。其他引用和迭代器不受影响。

相关问题