forward_list迭代器不可递增

时间:2018-06-16 14:45:20

标签: c++

当我做作业时,我收到错误“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;
}

我看到很多类似的问题,但找不到答案。希望每个人都能帮助我。谢谢!

0 个答案:

没有答案