首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

删除容器中的元素出现断电有关问题

2013-07-09 
删除容器中的元素出现断电问题for (std::vectorCWeapon*::iterator iter m_WeaponArray.begin() iter

删除容器中的元素出现断电问题

for (std::vector<CWeapon*>::iterator iter = m_WeaponArray.begin() ;iter != m_WeaponArray.end();)
{//遍历整个容器,如果有角色与球的距离小于10.f则让球消失,或者球与怪物的距离大于200就消失,反之更新球
if ((*iter)->isHit(CVector3(game->m_GameAction->getRolePos().x,15.f,game->m_GameAction->getRolePos().z)) == true){//如果胶水失效   则消失
/*delete *iter;*/
SAFE_DELETE((*iter));
iter = m_WeaponArray.erase(iter);

}else {
(*iter)->update();
++iter;
}
}
这里每次运行几秒就断电,段在SAFE_DELETE((*iter))上,大家帮我看看有什么语法错误么?
[解决办法]
在循环过程中,不要删除容器元素,直接修改 *iter = null; 
循环结束后可以把值为null的全部erase掉,循环过程中不有这样的动作。因为删除容器元素,很可能导致容器内存位置变化,迭代器还指向原来容器的位置,这样就报错。
[解决办法]
楼主,因为你在遍历容器的时候删除了容器元素,导致迭代器迭代混乱,内存错误,元素可以删,只是删的时候别忘了将当前的迭代器指针保存一下 

热点排行