关于stl vector调用erase后的Vector iterators incompatible!

出错代码如下(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号、微信号、电子邮件地址或其他隐私敏感信息,欢迎通过>>博主专用加密工具<<加密后发布,原文只有博主可以看到。