出错代码如下(VS2010),使用vector迭代器遍历并对满足条件的元素进行删除,
vector::iterator it=m_vecDataUnits.begin();
for (;it!=m_vecDataUnits.end();)
{
if (it->m_bSelected)
{
m_vecDataUnits.erase(it);
}
else
it++;
}
正确方法如下,删除vector元素后的it应该使用erase返回的值
vector::iterator it=m_vecDataUnits.begin();
for (;it!=m_vecDataUnits.end();)
{
if (it->m_bSelected)
{
it = m_vecDataUnits.erase(it);
}
else
it++;
}