gpt4 book ai didi

c++ - vector 迭代器不是增量 .erase()

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

我正在尝试删除此 vector 中与玩家发生碰撞的任何元素。但是,当我尝试从 vector 中删除元素时,程序崩溃并且出现错误; “vector 迭代器不是增量的”。

for (std::vector<Coin>::iterator i=CoinSet.begin(); i!=CoinSet.end(); i++) 
{
if (i->PlayerClear(player.collider()) == true)
{
score++;
cout<<score<<endl;
CoinSet.erase(i);
}
}

此代码在“CoinSet.erase(i)”之前运行良好,我尝试在不同点使用“CoinSet.clear()”,但无济于事。在此方面的任何帮助都将非常有用,在此先感谢!

最佳答案

这个已经讨论到死了。您不得对无效的迭代器进行操作。你想要这样的东西:

for (auto it = CoinSet.begin(); it != CoinSet.end(); /* no increment here! */ )
{
if (/* ... */)
{
// ...
CoinSet.erase(it++);
}
else
{
++it;
}
}

关于c++ - vector 迭代器不是增量 .erase(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23328285/

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