在C++中将动态数组的大小加倍时遇到问题
Having trouble doubling the size of a dynamic array in C++
我有一个将整数添加到数组的函数。如果空间用完,它应该将数组大小加倍,并在下一个空闲位置添加值。因此,例如,如果数组大小为 3,我输入 99、105 和 45。现在,如果我想添加 100,应该创建一个大小为 6 的新数组。下面是一段代码。 这一切都有效,我什至在它返回 100 的本地函数中显示 array[4]。当程序返回到 main 以再次显示菜单时,所有值都变为 -572662307。我花了几天时间试图弄清楚这一点,但无法解决。 谁能帮忙?
//Snippet from Main
cout<<"Enter the size of the array to be created";
cin >> size;
int *myArray = new int[size]();
add(myArray,Size);
//Problematic Code
void add (int Array[], int size){
int* temp = new int[size*2]; // create new Array 2x The Size
for (int i = 0; i < size; i++) {
temp[i] = Array[i];//Copy data over
}
delete [] Array;//Delete the old array
Array = temp;
cout << "nnEnter a Number: ";
cin >> newNumber;
Array[sizeTrack] = newNumber;
sizeTrack = sizeTrack++;
如果这是学校作业,你不能使用std::vector
,那么你需要知道,通过将参数声明为int Array[]
,它实际上与int* Array
相同。你有一个指针,在调用函数时,你传递一个指针的副本。
最后一部分很重要:在变量中传递值的副本。这意味着,当您修改函数内的参数变量时,您只会修改副本。修改副本会使原始副本保持不变。
这里有两种可能的解决方案,你应该已经知道(浏览你的教科书和课堂笔记(,或者应该能够在你的教科书中找到:
- 返回新指针。
- 通过引用传递参数。
相关文章:
- 编译包含字符串的代码时遇到问题
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 在 for 循环中查找问题时遇到困难
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 从其他类访问类时遇到问题
- 打印问题.我在数组中打印值时遇到一些问题
- 使用静态成员声明类时遇到问题
- C++ 填充数组时遇到问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 我在使用C++文件时遇到了一些问题
- 在将字符串放入字符串向量时遇到问题?
- 余数除法和不允许除以零 (c++) 时遇到问题
- 我在C++中使用 getline() 函数时遇到问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 在我的四叉树实现中遇到问题
- 在 c++ 中循环遍历数组时遇到问题
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 编译 Cilk Plus 程序时遇到问题