VS2015 矢量迭代器不可取消引用
VS2015 vector iterator not dereferencable
我有一个小问题,我必须基于 SDL 构建一个 2D 游戏。
当我尝试删除在"场景"中碰撞的 2 个对象时,我只是不断收到此错误。
std::vector<WaspObject*>::iterator itw;
std::vector<ProjectileObject*>::iterator itp;
for (itp = _projectiles.begin(); itp != _projectiles.end();)
{
for (itw = _wasps.begin(); itw != _wasps.end();)
{
if ((*itw)->Get_PositionY() + 37 >= (*itp)->Get_PositionY() + 0 && (*itp)->Get_PositionX()+0 >= (*itw)->Get_PositionX()+0 && (*itp)->Get_PositionX()+0 <= (*itw)->Get_PositionX()+49)
{
itw = _wasps.erase(itw);
itp = _projectiles.erase(itp);
}
else
{
itw++;
itp++;
}
}
}
_wasps和_projectiles是这个场景中的性病载体。
有人可以帮助我找到问题吗?提前感谢!
如果您在内部循环中没有得到任何点击并增加itp
,它很可能会超过_projectiles.end()
。
例如,如果黄蜂比弹丸多。或者,如果您在最后一个弹丸上,您将在一次itp++
后到达_projectiles.end()
.
因此,您可能希望在内循环的每一圈测试两个结束条件。
相关文章:
- C++取消引用指针.为什么会发生变化
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 取消引用运算符不能重载
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- C++ 关于指针取消引用的技术问题
- 没有取消引用/解包对象的标准方法?
- 列表 iter 不取消引用 使用列表进行插入排序
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 取消引用结束指针到数组类型的一个
- 取消引用向量时出现问题
- 取消引用指向整数的指针时获得不同的结果
- C++:取消引用十六进制值,有点语法问题
- C/C++ 取消引用错误:在空检查之前取消引用
- 取消引用后C++空测试
- 对于实际指针类型,用于检测类似指针(可取消引用)类型的模板函数失败
- 升压::可选<bool>取消引用
- 如何确定类型在 C++03 中是否可取消引用
- 数组迭代器不是可取消引用的错误
- 迭代器不是可取消引用的堆栈(表达式树)和循环无法正常工作
- 列出迭代器而不是可取消引用的运行时