Menu
CoddyTech

动态数组:插入

Coddy C++ 指针 课程的第 14 课,共 14 课。

最后,了解如何动态地向数组中添加元素也很重要。如果你无法使用 vector,而且数组已经满了,就需要找到一种方法来动态调整数组的长度并添加所需的元素。

下面是一个小示例,展示了如何动态更改数组,让它像 vector 一样工作。

  • 我们有一个初始的动态分配数组。
  • 我们创建一个长度增加 1 的新动态分配数组。
  • 我们把旧数组中的所有元素复制到新数组中。
  • 在最后一个索引(增加的 +1 位置)处添加所需的元素。
  • 我们删除旧数组。
  • 然后让指向已删除旧数组的指针指向新的修改后数组。
  • 最后,在程序末尾,再次删除数组指针。
int *array = new int[5]; // 初始数组
for(int i = 0; i < 5; i++)
    array[i] = i + 1;
    
int *newarray = new int[6]; // 长度增加 1 的新数组

for(int i = 0; i < 5; i++)
    newarray[i] = array[i]; // 复制所有元素
newarray[5] = 6; // 添加最后一个元素

delete[] array; // 释放旧数组的内存
array = newarray; // 让它指向新数组

for(int i = 0; i < 5; i++)
    cout << array[i] << " ";
    
delete[] array; // 释放新数组的内存
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

challenge icon

挑战

简单

给定动态分配的数组,不要更改默认代码,在中间添加代码,输入 3 个数字并将它们添加到数组末尾,就像本课中的示例一样。

不要更改默认代码

亲手试试

#include <iostream>

using namespace std;

int main() {

    int *numbers = new int[5];
    for(int i = 0; i < 5; i++)
        numbers[i] = i + 1;
    // 不要修改上面的代码


    // 在这里编写你的代码

    // 输入 3 个整数

    // 将它们动态添加到数组 "numbers" 中


    // 不要修改下面的代码
    for(int i = 0; i < 8; i++)
        cout << numbers[i] << " ";
    delete[] numbers;

    return 0;
}

C++ 指针中的所有课

自己练习: C++ 在线编译器