c++ - 从 vector 中删除多个元素 C++

标签 c++ vector

这里有一些代码,用于检查 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/

相关文章:

c++ - 用于随机插入/删除的综合 vector 与链表基准

sorting - 如何根据 haskell 中另一个向量的排序顺序对向量值进行重新排序?

c++ - 如何在 C++ 中使用 Windows DLL(后期绑定(bind))方法?

c++ - 基于范围的 vector for 循环

c++ - 为什么 std::vector 可以比原生数组更高效?

c++ - 如何在类的构造函数中初始化 vector

c++ - MySQL 中数据对象的 UID

c++ - 递归函数导致栈溢出

c++ - Windows 上的实际 C++ 程序内存布局(VS2010)

C++ 类复制构造函数没有匹配的函数