gpt4 book ai didi

c++ - C++ 中的列表迭代器不可递增错误消息

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:03 25 4
gpt4 key购买 nike

作为新手,我正在尝试使用列表类在 C++ 中实现排序功能。然而,运行代码我得到列表迭代器不可递增的错误......但是它似乎不太可能因为它应该是可递增的!

代码:

void shuffle (list<int> &list1)
{
list<int> smaller;
list<int> larger;

if (list1.size() > 1)
{
list<int>::iterator it;
//int it;

int x = list1.front();


for (it = list1.begin(); it != list1.end(); it++)
{
if(*it <= x)
{
smaller.push_front(*it);
list1.pop_front();

}
else
{
larger.push_back(*it);
list1.pop_front();
}
shuffle (smaller);
shuffle (larger);
}
}
else
{
print(smaller);
print(larger);

//cout << "No sorting needed! The list still looks like: ";
//print(list1);
}
print(smaller);
print(larger);
}

我只是在 de CPP 文件中实现了这个功能,在 main.

有人有什么建议吗?

最佳答案

您对 list1.pop_front() 的调用删除了迭代器最初指向的元素,使其无效。无效的迭代器不能递增。 :)

用调试器找了几分钟。在逐步执行该程序时,请注意“它”的值(value)。我不知道您是否知道如何使用调试器,但如果不知道,请帮自己一个忙并学习它。这是一个非常宝贵的工具。

(顺便说一句,以后请明确错误是在编译时还是在运行程序时发生的。你的问题说的是“编译程序”时发生的错误。我只是为你编辑了问题,希望你不介意。但这是一个重要的区别,并且使准确回答你的问题变得更加困难)

关于c++ - C++ 中的列表迭代器不可递增错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335096/

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