为什么我的列表值被覆盖
Why are my List values being overwritten?
我目前创建了一个小程序来学习列表。我允许用户将随机整数添加到列表中。只需使用 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。由于我不熟悉指针等,我应该将指针传递给列表而不是列表吗?
您将列表按值传递到 addRantInts() 函数中,这意味着该函数正在修改列表的副本而不是原始副本。 为避免这种情况,请改为通过引用传递它:
void addRandInts(List & dl, int num) // <-- note ampersand!
相关文章:
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 复制列表初始化的隐式转换的等级是多少
- LNK2038、MSVS2017 MAGMA的原因列表
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 没有为自己的结构调用列表推回方法
- 使用简单类型列表实现的指数编译时间.为什么
- 使用ios:ate写入到流会覆盖现有文件
- 一对向量构造函数:初始值设定项列表与显式构造
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 通过for循环使用用户输入填充列表
- C++:如何使函数只返回作为列表一部分的字符串
- 概念中的cv限定符需要表达式参数列表
- C++ - 调用子项方法覆盖父项列表中的内容
- Visual Studio 2012中可用覆盖的列表
- 初始值设定项列表覆盖动态多维数组的内存
- 为什么我的列表值被覆盖