我目前有一个僵尸项目,我已被授予大学,但我仍然坚持做几件事。
如何正确删除矢量?我们有僵尸和药丸对象存储在矢量中。我的第一个想法是改变符号,但显然不起作用,因为我所做的一切都是这样的:
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
是僵尸类的一个实例)。
如何将它们全部删除?
答案 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。