gpt4 book ai didi

c++ - 为什么 vector 抛出此断言失败警报?

转载 作者:行者123 更新时间:2023-11-30 01:19:33 25 4
gpt4 key购买 nike

我在 Debug模式下运行代码,程序弹出断言失败消息。请帮助我找出导致此断言失败的部分。 :{

Debug Assertion Failed!
Expression: vector iterators incompatible

代码:

int main()
{
vector<int> a(5);
fill(a.begin(), a.end(), 5);
a[2] = 3;
a[1] = 2; //so now a = {5,2,3,5,5}

auto it = a.begin();
for (; it != a.end();)
{
if (*it == 5)
a.erase(it); //Remove 5
else
it++;
}
copy(a.begin(), a.end(), ostream_iterator<int>(cout, "\n"));
}

最佳答案

当您在迭代期间删除时,删除的迭代器变得(并且其他可能变得)无效:

制作它:

it = a.erase(it);

关于c++ - 为什么 vector 抛出此断言失败警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20729491/

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