我正在努力思考逻辑的工作原理。这个想法是动态分配内存,因为我不知道程序将经历多少次迭代,而且我不能使用向量。因此,这里是我到目前为止所拥有内容的抽象。我有一个do while循环,其中包含变量count,它将用作数组的SIZEupdate将存储在数组中。我不知道的事情是如何更新数组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;
}

最佳答案

每次循环迭代时,您需要:


释放tempiPoint的内存,因为它是在上一次迭代中动态分配的。
iPoint的当前大小重新分配它。
iPoint的数据复制到tempiPoint
释放iPoint的内存,并以新的大小重新分配它。
tempiPoint的数据复制回iPoint,然后将新值添加到iPoint的末尾。


另外,请注意*(iPoint + count)等效于iPoint[count](这是您应使用的语法)。

这似乎是家庭作业,因此我将实施留给您。

更好,更简单的解决方案(由Ben Voigt指出)是使tempiPoint指向iPoint的内存,重新分配iPoint,使用iPoint将数据传输回tempiPoint然后释放内存。

关于c++ - 您如何动态扩展数组和更新?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27238755/

10-09 13:50