c++ - 从 for 循环中的 vector 中删除元素 - C++

标签 c++ vector

我试图在敌人被摧毁时删除他们的健康值,如果我有以下内容,我会收到错误消息“没有重载函数实例”...”与参数列表匹配:

upgradeHealth.erase(inner)

它似乎只接受这样的东西:

upgradeHealth.erase(upgradeHealth.begin())

我需要删除 inner 位置的元素,以便它与刚刚被摧毁的敌人相匹配。这是 for 循环:

for (outer = 0; outer < bullets.size(); outer++)              
{
    for (inner = 0; inner < upgrades.size(); inner++)       
    {
        if (upgrades[inner]->HitTest(bullets[outer])) 
        {
            upgradeHealth[inner] -= 1;
            bullets.erase(outer--);
            multiplier += 0.01;
            hasHit = true;
            multiplierTime = 0;
            cout << upgradeHealth[inner] << endl;
            if (upgradeHealth[inner] == 0) 
                upgradeHealth.erase(inner), upgrades.erase(inner), score += 100 * multiplier;
            break;
        }
    }
}

最佳答案

std::vector类中只有两个重载成员函数erase

iterator erase(iterator position);
iterator erase(iterator first, iterator last);

关于c++ - 从 for 循环中的 vector 中删除元素 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297172/

相关文章:

c++ - 盒子碰撞代码

c++ - 用 C++ 解析巨大的 csv 文件

c++ - std::vector::reserve 是否重新分配内部数组?

c++ - C++ Map中如何使用自定义结构

c++ - CComVariant 作为 VARIANT 传递

c++ - 分而治之算法找到数组的最大元素

c++ - 将特定的逻辑核心专门分配给特定的进程,Windows,C++

c++ - 如何将 vector 转换为数组

c++ - 四元数相机和射弹 vector

python - 向量化 numpy 的函数,将一个向量的每个元素与另一个向量的每个元素相关联