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