在数组中插入元素

时间:2014-09-28 21:06:36

标签: c++

void insert(int*arr, int element,int index)
{
    if (index < SIZE)
    {
        arr[index] = element;
    }
    else
    {
        int* new_array = new int[SIZE + 1];
        int i = 0;
        for (i = 0; i < SIZE; i++)
        {
            new_array[i] = arr[i];
        }
        new_array[i] = element;
        SIZE++;
        printArray(new_array);
    }



}

我在C ++中创建了一个插入函数,它将在数组的特定索引处插入值。索引增加后,我创建了一个新数组,并将较小数组中的值复制到其中。 问题是printArray函数只是循环打印数组在插入函数内部调用时运行良好,否则当我从数组的主要最后一个值调用printArray时,为什么会这样?

1 个答案:

答案 0 :(得分:4)

您需要删除旧数组并在其位置返回新数组,例如:

void insert(int* &arr, int element, int index) // <<< make `arr` a reference so that we can modify it
{
    if (index < SIZE)
    {
        arr[index] = element;
    }
    else
    {
        int* new_array = new int[SIZE + 1];
        for (int i = 0; i < SIZE; i++)
        {
            new_array[i] = arr[i];
        }
        new_array[SIZE] = element;
        SIZE++;           // <<< NB: using a global for this is not a great idea!
        delete [] arr;    // <<< delete old `arr`
        arr = new_array;  // <<< replace it with `new_array`
    }
}

LIVE DEMO

请注意,如果您开始使用正确的C ++惯用语,例如std::vector<int>而不是C风格的int *数组,那么对阵列的所有显式低级别管理都会消失。