簡體   English   中英

調試斷言失敗並顯示列表

[英]Debug assertion failed with list

大家好,可以幫幫我嗎? 問題是,當一個人從列表中輸入一個元素時,他可以在該元素之前插入另一個列表中的元素,但我不斷地敲出錯誤。 也許有人會幫忙? 它看起來像: 3 6 7 9 用戶輸入 6 他可以創建另一個列表,如 8 7 5 和 output 是 3 8 7 5 6 7 9錯誤

#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
int main()
{
int size
int size1;
int el1;
int znach=0;
    cout << "Enter size: " << endl;
        cin >> size;
         list<int>lis;
            list<int>lis1;
            list <int> ::iterator it;
            int s = lis.size() / 2;
            auto it1 = lis.begin();
            advance(it1, s);
            for (int i = 0; i <size; i++)
            {
                cout << "Enter " << i << " element: ";
                cin >> t;
                lis.push_back(t);
            }
            cout << "Enter element: " << endl;
            cin >> el1;
            for (it = lis.begin(); it != lis.end(); it++)
            {

                if (*it = el1)
                {
                    znach++;
                }
            }
                 if (znach == 0)
                    {
                        cout << "There is no element;" << endl;
                    }
        else
                {
                    cout << "Enter size of new vector: " << endl;
                    cin >> size1;
                    for (int i = 0; i < size1; i++)
                    {
                        int t1;
                        cout << "Enter " << i << " element: ";
                        cin >> t1;
                        lis1.push_back(t1);
                    }
                    auto it2 = lis.begin();
                    while (*it2 != el1)
                    {
                        it2++;
                    }
                    --it2;
                    lis.splice(it2, lis1);
                }


            for (it = lis.begin(); it != lis.end(); it++)
            {
                cout << *it<<" ";
            }
        }

我不知道你的代碼在做什么,也許還有其他問題。 但是,您得到的運行時錯誤是由

auto it2 = lis.begin();
while (*it2 != el1)
{
    it2++;
}
--it2;

*lis.begin() == el1然后你永遠不會增加it2然后減少它,但你不能減少開始迭代器。 通常那只是未定義的,但是當你編譯一個調試版本時,你會得到一個斷言,告訴你出了什么問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM