我目前已经创建了一个小程序来了解列表。我允许用户将随机整数添加到列表中。它只需使用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到它。 因为我是新手指针之类的,我应该传递一个指针而不是列表的指针?
在您的列表实现中显然存在一个错误,为什么会发布除列表中的代码之外的所有内容? – DanielKO
@DanielKO我觉得我的错误来自发布的代码。我不是100%正面的,这就是为什么我提到如果需要/请求我会发布我的'insert()'代码。我相信杰里米是正确的,因为我正在传递我的价值而不是参考。 – StartingGroovy
即使您要传递副本,插入副本也不应修改原始副本,因此您的副本构造函数中也存在问题;最有可能的是该副本的破坏者搞乱了原来的。为什么代码说“数组大小”,输出显示“当前大小”?另外,要插入的循环看起来不正确,你应该从0循环到'num'; 'insert'中的'pos'参数应该是什么意思? List.insert(List,pos)是什么意思?你插入一个列表到另一个? – DanielKO