在 C++ 中使用迭代器从地图中删除项目

Using iterator for removing items from map in c++

map<int, int> m_map;
// ...
map::iterator it =  m_map.begin();
while (it != m_map.end())
{
  m_map.erase(it++);
}

++ 动作何时发生?是在 erase 之前还是之后?什么时候这样做才安全?

我认为没有指定 ++ 是在调用 erase 之前还是之后发生。尽管如此,即使它保证在调用之前执行,您不得不询问的事实表明代码是错误的。有更好、100% 安全的选择:

while (it != m_map.end())
{
  it = m_map.erase(it);
}

erase returns 指向已删除元素之后的元素的迭代器。