📜  如何在 C++ 中增加数组内存(1)

📅  最后修改于: 2023-12-03 15:38:13.886000             🧑  作者: Mango

如何在 C++ 中增加数组内存

在 C++ 中,数组是一种非常常见的数据结构,但是如果需要存储更多的数据,我们可能需要扩大数组的内存空间。本文将介绍如何在 C++ 中增加数组内存。

方法一:使用动态数组

在 C++ 中,可以使用 new 和 delete 运算符来动态分配和释放内存,也就是使用动态数组。dynamic array 的大小能够在运行时确定,因此它也被称为运行时数组。

使用动态数组,在需要增加数组内存时,我们可以使用以下代码进行操作:

int n = 10; // 初始数组大小为 10
int *arr = new int[n]; // 动态分配内存
for (int i = 0; i < n; i++) {
    arr[i] = i + 1; // 初始化数组
}
n = 20; // 增加数组大小为 20
int *tmp = new int[n]; // 分配新的内存空间
for (int i = 0; i < n; i++) {
    if (i < 10) {
        tmp[i] = arr[i]; // 将原有元素复制到新分配的内存空间中
    } else {
        tmp[i] = i + 1; // 新元素赋值
    }
}
delete[] arr; // 释放旧内存
arr = tmp; // 更新数组指针

上述代码中,我们首先动态分配了一个大小为 10 的数组 arr,并对其进行了初始化。然后,我们增加了数组大小为 20,分配了新的内存空间,并将旧的数组 arr 中的元素复制到新分配的内存空间中,同时新增元素和赋值。最后,我们释放旧的内存,更新数组指针,以便后续使用新分配的内存。

需要注意的是,在 C++ 中,动态数组分配的内存空间需要手动释放,否则会导致内存泄漏。

方法二:使用 STL 容器

除了使用动态数组外,我们还可以使用 STL(Standard Template Library)容器来存储数据。STL 提供了多种容器类型,例如 vector、deque、list、map、set 等。其中,vector 是常用的动态数组容器类型。

使用 STL 容器,在需要增加数组内存时,我们可以使用以下代码进行操作:

vector<int> arr(10); // 初始数组大小为 10
for (int i = 0; i < arr.size(); i++) {
    arr[i] = i + 1; // 初始化数组
}
arr.resize(20); // 增加数组大小为 20
for (int i = 10; i < arr.size(); i++) {
    arr[i] = i + 1; // 新元素赋值
}

上述代码中,我们创建了一个大小为 10 的 vector 容器 arr,并对其进行了初始化。然后,我们增加了数组大小为 20,通过调用 resize() 方法来更新容器大小。最后,我们对新增的元素进行了赋值,而原有元素则保持不变。

需要注意的是,在使用 STL 容器时,不需要手动释放内存,STL 容器会自动管理内存,避免了内存泄漏等问题。

总结

以上介绍了两种在 C++ 中增加数组内存的方法,分别是使用动态数组和使用 STL 容器。使用什么方法,取决于实际需求和使用习惯。需要注意的是,无论选择哪种方法,都需要谨慎管理内存,避免内存泄漏等问题。