C++ 如何删除向量?c++;

C++ 如何删除向量?c++;,c++,vector,C++,Vector,我目前有一个僵尸项目,我已经给了大学,但我被困在一些事情 如何正确删除向量?我们有僵尸和药丸对象,它们存储在向量中。我的第一个想法是改变符号,但显然这不起作用,因为我就是这样改变的: for (int i = 0; i < MAXPILLS; i++) { //if pill coordinates = spot coordinates if ((pills.at(i).y == sp.y) && (pills.at(i).x == sp.x)) {

我目前有一个僵尸项目,我已经给了大学,但我被困在一些事情

如何正确删除向量?我们有僵尸和药丸对象,它们存储在向量中。我的第一个想法是改变符号,但显然这不起作用,因为我就是这样改变的:

for (int i = 0; i < MAXPILLS; i++)
{
    //if pill coordinates = spot coordinates
    if ((pills.at(i).y == sp.y) && (pills.at(i).x == sp.x))
    {
        pills.at(i).symbol = TUNNEL;    //make pill a tunnel
    }
}
for(int i=0;i
此药丸对象需要完全移除。当一个僵尸掉进洞里时,我也必须这样做(
sp
是僵尸类的一个实例)

如何将其全部删除?

请改用算法:

pills.erase(std::remove_if(pills.begin(), pills.end(), [&sp](const decltype(pills.at(0)) &p){return p.x == sp.x && p.y == sp.y;}));

请注意,我在这里使用的是lambda函数,它是C++11构造,因此您可能希望首先检查是否允许在赋值中使用它,如果不允许使用C++11,则将其替换为functor对象。

您的问题一点也不清楚。您试图从何处删除向量?如果您的意思是从向量中删除项目,请查看
擦除
功能您的意思是要删除向量的特定元素吗?您已经查看了吗?可能您忘记了减少
最大值
,您在删除一个元素后访问了最后一个元素。下面是我试图用该代码重新创建的示例。remove_if标记为命名空间“std”没有成员“remove_if”?您必须首先包括
;-)