这是一些代码,用于检查2个单元在彼此相互攻击后是否被杀死,但是当我移除向量中的位置时,单位超出范围。我怎样才能同时删除?从一个向量中删除多个元素C++
if ((MyHealth <= 0) && (EnemyHealth <= 0))
{
PlayerUnits.erase(PlayerUnits.begin() + MyUnit, PlayerUnits.begin() + EnemyUnit);
}
else if (MyHealth <= 0)
{
PlayerUnits.erase(PlayerUnits.begin() + MyUnit);
}
else if (EnemyHealth <= 0)
{
PlayerUnits.erase(PlayerUnits.begin() + EnemyUnit);
}
首先抹掉较大的索引 –
@DieterLücking,这就是答案。你应该这样做:) –
如果你不需要保持向量中元素的顺序,那么将想要移除的元素与向量的最后一个元素进行交换应该会更快,矢量的大小。 – anxieux