std::矢量超出边界
std::vector out of boundary
在下面的代码中,assert语句正在工作(变为false)。然而,没有任何并行线程访问数组。实际上根本没有任何并行代码。当我在函数开始时(在visual studio中)执行该行时,它可以正常工作。是什么原因导致了问题?我看不出有什么原因。
void CheckProjectileMeteorCollision()
{
int i = ((int)m_meteorManager.m_meteors.size() - 1);
for (i; i > -1; i--)
{
int j = ((int)m_projectileManager.m_projectiles.size() - 1);
for (j; j > -1; j--)
{
assert(i != m_meteorManager.m_meteors.size());
if (SpherePointIntersection(
m_meteorManager.m_meteors[i]->m_node->m_translation,
m_meteorManager.m_meteors[i]->m_collisionRadius,
m_projectileManager.m_projectiles[j]->m_node->m_translation))
{
SafeDel(m_projectileManager.m_projectiles[j]);
m_projectileManager.m_projectiles.erase(m_projectileManager.m_projectiles.begin() + j);
SafeDel(m_meteorManager.m_meteors[i]);
m_meteorManager.m_meteors.erase(m_meteorManager.m_meteors.begin() + i);
}
}
}
}
可能存在以下问题:内部循环(对于J)可能只删除m_meter的一个以上元素。如果是这样,内部循环将比外部循环更快地擦除外部循环的元素(对于I)。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::当在256字节边界上写入整数时,流的奇怪行为
- std::数组边界检查如何工作?
- 是否可以跨 dll 边界返回常量引用/指向 std::vectors?
- std::any 跨共享库边界在 mingw 中
- 自动检查 std::vector 中的边界
- `sTD :: bitset`带有和没有边界检查
- 在DLL边界上使用std::move是一种好的做法吗
- 在 dll 边界上公开 std::vector语言 - 编译器独立性的最佳实践
- C++ 数字库:std::uniform_int_distribution<>,更改调用之间的分布边界
- 为API使用std::函数(跨越模块边界)
- 使用std::vector和.at()检查2D数组边界
- 即使边界键不存在,我是否可以遍历 std::map 键范围?
- std::字符串可以跨DLL边界按值传递吗?
- std::矢量超出边界
- std::uncaught_exception 不能跨 DLL 边界工作