我试图围绕逻辑如何运作。我的想法是动态分配内存,因为我不知道程序将经历多少迭代,我不能使用向量。所以这是我迄今为止所拥有的东西的抽象。我有一个while循环,其中包含变量count
,它将充当数组的SIZE
。 update
将存储在数组中。我无法弄清楚的是如何更新数组iPoint
而不会产生无限量的if else
语句。我知道有一种更好的方法,但在这一点上,我的大脑是油炸的。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int iTickets, count = 0, update = 0;
int *tempiPoint = NULL;
int *iPoint = NULL;
do
{
count++;
update++;
if (count == 1)
{
tempiPoint = new int[count];
for (int i = 0; i < count; i++)
{
*(tempiPoint + i) = update;
}
}
else if (count > 1)
{
iPoint = new int[count];
for (int i = 0; i < count; i++)
{
*(iPoint + i) = *(tempiPoint + i);
}
*(iPoint + count) = update;
}
} while (count != 10);
for (int i = 0; i < count; i++)
{
cout << *(iPoint + i);
}
delete[] tempiPoint;
delete[] iPoint;
return 0;
}
答案 0 :(得分:0)
每次循环迭代时,您需要:
tempiPoint
的内存,因为它是在前一次迭代中动态分配的。 iPoint
的当前大小重新分配。iPoint
的数据复制到tempiPoint
。iPoint
内存并使用新尺寸重新分配。tempiPoint
的数据复制回iPoint
,然后将新值添加到iPoint
的末尾。另请注意,*(iPoint + count)
等同于iPoint[count]
(这是您应该使用的语法)。
这似乎是作业,所以我将实施留给你。
一个更好更简单的解决方案(Ben Voigt的评论中指出)就是让tempiPoint
指向到iPoint
的内存,重新分配iPoint
,使用iPoint
将数据传回tempiPoint
,然后释放内存。