当前位置:  开发笔记 > 编程语言 > 正文

在C++中列出迭代器不可递增的错误消息

如何解决《在C++中列出迭代器不可递增的错误消息》经验,为你挑选了1个好方法。

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

码:

void shuffle (list &list1)
{
    list smaller;
    list larger;

    if (list1.size() > 1)
    {
        list::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文件中主要实现了这个功能.

有人有什么建议吗?



1> jalf..:

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

用调试器找了几分钟.当你逐步完成程序时,请注意'它'的价值.我不知道你是否知道如何使用调试器,但如果没有,请自己帮忙并学习它.这是一个非常宝贵的工具.

(顺便说一句,将来,请明确说明错误是在编译时还是在运行程序时发生的.你的问题说明了"编译程序"时发生的错误.我刚刚为你编辑了这个问题,希望你不介意.但这是一个重要的区别,并且更难以准确地回答你的问题)

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有