基本上我想要复制来重新调整我的数组。接下来的函数是搜索数组中的下一个可用位置。一旦下一次命中10,这是我希望它调用重复的最大容量。如果在下一个函数中发现数组已满,则基本上调用duplicate。
问题在于,当我将循环变为10个数字时,它在11日失败。在第10个元素进入后,它进入复制函数,然后它进入指针,然后通过数组,然后它只是保持循环,所以当我使用我的函数来查看元素的总数时,它仍然显示10 ,这意味着maxsize
没有变化。我不明白为什么?
void ProgramOne<Type>::Next(Type & y)
{
if (!IsFull())
{
if (count < maxsize)
{
bag[count] = y;
count++;
}
}
else
{
Duplicate();
}
}
我试着称之为
void ProgramOne<Type>::Duplicate()
{
int *bagB = new int[maxsize * 2];
for (int i = 0; i < maxsize; i++)
{
bagB[i] = bag[i];
}
delete[] bag;
bag = bagB;
}
答案 0 :(得分:0)
复制原始元素后,Duplicate()
函数无法更新maxsize
。在它返回之前,它应该将maxsize
更新为它为新bag
分配的内容。
delete[] bag;
bag = bagB;
maxsize *= 2;