传递给函数时,非空列表变为空

Non empty list when passed to function becomes empty

本文关键字:列表 函数      更新时间:2023-10-16

所以我得到了这个代码。问题是使用 for 循环我创建空列表并向其添加 1 个整数。然后我将列表传递给DFS函数,它说列表为空。知道为什么会这样吗?

#include <list>
#include<vector>
#include <iostream>
using namespace std;
list<short> integer;
vector<list<short> > all;
void DFS(list<short> ingeter, int N)
{
    if(integer.empty())
    {
        cout<<"IT IS EMPTY"<<endl;
        return;
    }
    if(integer.size() > N || (integer.size() > 0 && (integer.front() == 0 || integer.back() % 2 == 0)))
    {
        return;
    }
    cout<<"size: "<<integer.size()<<endl;
    all.push_back(integer);
    for(short i = 0; i <= 9; ++i)
    {
        integer.push_back(i);
        integer.push_front(i);
        DFS(integer, N);
        integer.pop_back();
        integer.pop_front();
    }
}
int main()
{
    int N = 8;
    for(short i = 0; i <= 9; ++i)
    {
        list<short> current;
        current.push_back(i);
        cout<<"size: "<<current.size()<<endl;
        DFS(current, N);
    }
    return 0;
}

问题是您访问了错误的变量。您将参数命名为 ingeter但您的函数正在访问全局变量integer

void DFS(list<short> ingeter, int N)
//                   ^^^^^^^
{
    if(integer.empty())
    // ^^^^^^^
    {
    //...
    }
 }