【发布时间】:2010-09-25 00:09:57
【问题描述】:
作为一个新手,我正在尝试使用列表类在 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 下。
有人有什么建议吗?
【问题讨论】:
-
假设 jalf 是正确的,我可以说我理解“编译代码,我得到错误......”意味着你得到一个编译器错误,而不是它编译但你得到一个运行时出错。
-
将“编译代码”更改为“运行代码”。在 VS2k8 中运行他的代码时,我得到了完全相同的错误。 VS 默认对迭代器执行大量额外的验证和边界检查,这就是他遇到的错误。
-
好的,感谢您发现错误,但它必须是什么而不是 list1.pop_front? list1.pop_back?