我目前创建了一个小程序来了解列表。我允许用户将随机整数添加到List中。它只需使用DList.insert(number, position)
即可。第一次迭代时一切正常,但是当我允许用户输入更多随机数时,它会删除之前的数字,然后添加更多随机数。
由于我是C ++的新手(很少用它来编程),我认为我犯的是一个非常简单的错误。问题似乎是我只是覆盖列表中的旧值而不是添加新值。
以下是我正在做的事情,
List testList;
//Ask user for a number of elements to add
int num = get_number();
addRandInts(testList, num);
//I then give the user the option to add more or quit
这是我的addRandInts
:
void addRandInts(List dl, int num)
{
int random_max = 999;
int numIterations = dl.getSize() + num;
if(num > 0) {
cout << "Array Size: " << dl.getSize() << endl;
for(int i = dl.getSize(); i < numIterations; i++) {
dl.insert(rand() % random_max + 1, i);
}
} else {
cout << "You need to enter a positive integer" << endl;
}
dl.display(cout);
}
如果需要,我可以提供List.insert(List, pos)
方法。
以下是示例输出:
Please enter an integer number for the list: 5
Current Size: 0
42 486 341 527 189
//chance to add more to list
Please enter an integer number for the list: 3
Current Size: 0
740 490 388
所以在第二轮比赛中我认为我应该有5的大小,它应该加3。 由于我是指针之类的新手,我应该将指针传递给列表而不是列表吗?
答案 0 :(得分:3)
您通过值将列表传递到addRantInts()函数,这意味着该函数正在修改列表的副本而不是原始副本。为了避免这种情况,请通过引用传递它:
void addRandInts(List & dl, int num) // <-- note ampersand!