在数组中插入元素

Insert element in array

本文关键字:元素 插入 数组      更新时间:2023-10-16
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 时是垃圾,为什么会这样?

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

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`
    }
}

现场演示

请注意,如果您开始使用适当的C++习惯用法(例如 std::vector<int> 而不是 C 样式的int *数组(,则数组的所有这些显式低级管理都会消失。