c++动态数组容量扩容
时间: 2023-11-24 13:53:27 浏览: 75
C++动态数组的容量扩容可以通过重新分配更大的内存空间并将原有数据复制到新的内存空间来实现。具体步骤如下:
1. 创建一个指向原有动态数组的指针,以及一个新的指针用于指向新的内存空间。
2. 计算新的内存空间的大小,通常是原有内存空间的两倍。
3. 使用C++中的new运算符为新的内存空间分配内存。
4. 使用引用中的数组复制函数将原有数据复制到新的内存空间中。
5. 释放原有内存空间。
6. 将新的指针赋值给原有指针,以便后续使用。
以下是一个C++动态数组容量扩容的示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int capacity = 5; // 初始容量
int size = 0; // 当前元素个数
int *arr = new int[capacity]; // 创建动态数组
// 向数组中添加元素
for (int i = 0; i < 10; i++) {
if (size == capacity) { // 如果数组已满,进行扩容
int *newArr = new int[capacity * 2]; // 创建新的内存空间
memcpy(newArr, arr, sizeof(int) * capacity); // 复制原有数据到新的内存空间
delete[] arr; // 释放原有内存空间
arr = newArr; // 将新的指针赋值给原有指针
capacity *= 2; // 更新容量
}
arr[size++] = i; // 添加元素
}
// 输出数组中的元素
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
delete[] arr; // 释放内存空间
return 0;
}
```
阅读全文