出错代码如下(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++;
}
博主友情提示:
如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。