我真的不确定为什么这不起作用。这就像阵列大小不会倍增。我确定我所遗漏的内容很简单,但我无法弄清楚它为何无法正常运作。
void add_element(int* &array, int &size , int &count)
{
int tempp;
cout << "What number do you want to add ? " << endl;
cin >> tempp;
int temp = size * 2;
int *newArr;
newArr = new int[temp];
if(count == size)
{
for (int i = 0; i < size; i++)
{
newArr[i] = array[i];
}
size = temp;
delete[] array;
++count;
newArr[count] = tempp;
array = newArr;
}
}
答案 0 :(得分:1)
您的功能未正确实施,甚至没有关闭。
每次调用函数时都不应该分配一个新数组,只有当前数组不足以存储用户的数字时才会这样。
如果count
和size
不是相同的值,则表示您正在泄漏内存,并且您没有在现有数组中插入任何内容。
仅当count
和size
值相同时,您才会触摸数组,但是当您将用户的数字存储到新数组中时,您将其存储在错误的指数。
请改为尝试:
void add_element(int* &array, int &size, int &count)
{
int number;
cout << "What number do you want to add? " << endl;
cin >> number;
if (count == size)
{
int newSize = size * 2;
int *newArr = new int[newSize];
for (int i = 0; i < count; ++i)
{
newArr[i] = array[i];
}
delete[] array;
array = newArr;
size = newSize;
}
array[count] = number;
++count;
}