这里有一些代码,用于检查 2 个单位在互相攻击后是否被杀死,我传入 vector 中的位置,但是当我删除一个单位时, vector 的大小发生了变化,因此第二个单位超出了范围。如何同时删除两者?
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);
}
最佳答案
与其自己编写删除逻辑,不如使用 algorithm
中的 std::remove_if
进行更好的管理。根据您的编译器是否支持 C++11,谓词可以是 lambda 或命名函数。
关于c++ - 从 vector 中删除多个元素 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29805925/