你如何删除矢量? C ++

时间:2015-04-25 10:03:35

标签: 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))
    {
        pills.at(i).symbol = TUNNEL;    //make pill a tunnel
    }
}

需要完全移除此药丸对象。当僵尸掉进洞里时,我也必须这样做(sp是僵尸类的一个实例)。

如何将它们全部删除?

1 个答案:

答案 0 :(得分:2)

改为使用remove_if算法:

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构造,因此您可能需要检查是否允许您首先在作业中使用它,如果您&#将其替换为仿函数对象39;不允许使用C ++ 11。