删除std::map m中的元素,如果用迭代器操作:
std::map::iterator it = m.begin ();
for ( ; it != m.end(); ++it)
{
m.eraser (it);
}
这样做会出问题,因为被eraser后迭代器失效,再进行++就会down机
如果这样
std::map::iterator it = m.begin ();
for ( ; it != m.end(); )
{
m.eraser (it++);
}
这样就没问题了,因为先进行迭代器++后删除迭代器,所以就没有问题了,相当于下面的代码
std::map::iterator it = m.begin ();
for ( ; it != m.end(); )
{
std::map::iterator tmp_it = it;
++it;
m.eraser (tmp_it );
}