我有一个地图,我迭代这样:
std::map<unsigned int, GameObject *>::iterator itr = _gameObjects.begin();
while (itr != _gameObjects.end())
{
itr->second->Update();
itr++;
}
Run Code Online (Sandbox Code Playgroud)
Update()可能会将一个元素插入到地图中,甚至可以从中删除一个元素,但它不一定会执行这两个元素中的任何一个.它显然不会那样工作.有没有办法可以做到?
擦除元素的引用和迭代器无效.其他引用和迭代器不受影响.
没有迭代器或引用无效.
没有迭代器或引用无效.
如果Update()不删除自己,那么代码是合法的.如果Update()是,那就不是.Update()将被要求通知调用代码它是否自行删除,设置标志或返回下一个迭代器(如Attila所建议).
| 归档时间: |
|
| 查看次数: |
5795 次 |
| 最近记录: |