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

时间:2014-02-16 16:42:34

标签: c++

所以我得到了这段代码。问题是,使用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;
}

1 个答案:

答案 0 :(得分:2)

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

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