【发布时间】:2015-04-01 11:27:32
【问题描述】:
map<int, int> m_map;
// ...
map::iterator it = m_map.begin();
while (it != m_map.end())
{
m_map.erase(it++);
}
++ 操作何时发生?是在erase 之前还是之后?什么时候这样做是安全的?
【问题讨论】:
-
这取决于实施。最好使用 [en.wikipedia.org/wiki/Erase%E2%80%93remove_idiom](erase-remove idiom)
-
@BruceAdi Erase-remove 仅适用于序列容器,不适用于关联容器。
-
在地图上拨打
clear()当然更好。
标签: c++11 dictionary iterator