繁体   English   中英

如何删除向量? C ++

[英]How do you remove a vector? c++

我目前有一个针对uni的僵尸项目,但是我在某些方面遇到了麻烦。

如何正确删除载体? 我们有僵尸和药丸对象存储在向量中。 我的第一个想法是更改符号,但显然这是行不通的,因为这就是我正在更改的所有内容:

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是僵尸类的实例)。

如何将它们全部删除?

使用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构造,因此您可能要检查是否允许首先在分配中使用它,如果不允许使用C +,则将其替换为functor对象+11。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM