在vc6.0下,若(siSprite为迭代器)m_vSprites.erase(siSprite);
则siSprite会自动指向下一个元素,而vs05及之后版本则不会自动指向,而是丢失处理。如果接着再来一句:
siSprite--或++,则报错:Expression:("this->_Has_container()",0)......
解决办法为:siSprite=m_vSprites.erase(siSprite);
这样就能指向下一个元素。其实也就是两个版本中erase函数的返回值变了
本文介绍了在VC6.0与VS2005及之后版本中迭代器处理的不同之处。具体地,在使用erase函数删除元素后,VC6.0中的迭代器会自动指向下一个元素,而在VS2005及之后版本中则不会自动指向,需要通过特定方式更新迭代器。
2262

被折叠的 条评论
为什么被折叠?



