gpt4 book ai didi

c++ - 你如何删除一个 vector ? C++

转载 作者:行者123 更新时间:2023-11-28 02:28:04 25 4
gpt4 key购买 nike

我目前有一个僵尸项目,我已经获得了 uni,但我在一些事情上遇到了困难。

如何正确删除 vector ?我们有存储在 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 是僵尸类的一个实例)。

我怎样才能将它们一起删除?

最佳答案

使用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;}));

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

关于c++ - 你如何删除一个 vector ? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29863761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com