当我做作业时,我收到错误“forward_list iterator not incrementable” 以下是我的代码:
#include<iostream>
#include<forward_list>
#include<initializer_list>
using namespace std;
int main()
{
forward_list<int> lis{ 1, 2, 3, 4, 5, 6 };
auto pre = lis.before_begin();
auto curr = lis.begin();
for (auto i :lis)
{
if (i & 0x1)
curr = lis.erase_after(pre);
else
{
pre=curr;
curr++;
}
}
for (auto i : lis)
cout << i << endl;
return 0;
}
我尝试使用“for each”循环来解决这个问题而不是迭代器的范围(这只是一个暂时的想法),我发现在第二个循环中“pre”迭代器似乎变得无效。但是当我使用迭代器的范围来解决这个问题时,它就可以了:
#include<iostream>
#include<forward_list>
#include<initializer_list>
using namespace std;
int main()
{
forward_list<int> lis{ 1, 2, 3, 4, 5, 6 };
auto pre = lis.before_begin();
auto curr = lis.begin();
while (curr != lis.end())
{
if (*curr & 0x1)
curr = lis.erase_after(pre);
else
{
pre=curr;
curr++;
}
}
for (auto i : lis)
cout << i << endl;
return 0;
}
我看到很多类似的问题,但找不到答案。希望每个人都能帮助我。谢谢!