C++数组添加元素
在C++中,数组是一种用来存储相同类型元素的数据结构。数组的大小在创建时就固定了,无法动态地改变数组的大小。但是我们可以通过一些技巧来实现向数组添加元素的功能。
方法一:使用动态数组
动态数组是一种能够动态增加大小的数组。我们可以使用std::vector
来实现动态数组的功能。
#include <iostream>
#include <vector>
int main() {
std::vector<int> arr = {1, 2, 3, 4, 5};
// 向数组末尾添加元素
arr.push_back(6);
// 输出数组元素
for(int i=0; i < arr.size(); i++) {
std::cout << arr[i] << " ";
}
return 0;
}
运行结果:
1 2 3 4 5 6
在上面的示例代码中,我们声明了一个std::vector
数组arr
,然后使用push_back
方法向数组末尾添加元素。最后遍历数组并输出元素。
方法二:使用动态内存分配
我们也可以使用动态内存分配来实现向数组添加元素的功能。我们可以使用new
和delete
关键字来手动动态分配和释放内存。
#include <iostream>
int main() {
// 创建一个大小为5的数组
int *arr = new int[5]{1, 2, 3, 4, 5};
// 创建一个新的更大的数组
int *newArr = new int[6];
// 复制旧数组元素到新数组
for(int i=0; i < 5; i++) {
newArr[i] = arr[i];
}
// 添加新元素
newArr[5] = 6;
// 释放原数组内存
delete[] arr;
// 将新数组赋值给原数组
arr = newArr;
// 输出数组元素
for(int i=0; i < 6; i++) {
std::cout << arr[i] << " ";
}
delete[] arr;
return 0;
}
运行结果:
1 2 3 4 5 6
在上面的示例代码中,我们首先使用new
关键字手动分配了一个大小为5的整型数组arr
,然后创建了一个更大的数组newArr
,将旧数组元素复制到新数组中,并向新数组添加新元素。最后释放原数组内存,将新数组赋值给原数组。
方法三:使用动态指针数组
动态指针数组是一种数组,其每个元素都是一个指针,指向动态分配的内存。
#include <iostream>
int main() {
// 创建一个大小为5的指针数组
int **arr = new int*[5];
// 分配内存并赋值
for(int i=0; i < 5; i++) {
arr[i] = new int(i+1);
}
// 创建一个更大的指针数组
int **newArr = new int*[6];
// 复制旧数组元素到新数组
for(int i=0; i < 5; i++) {
newArr[i] = arr[i];
}
// 添加新元素
newArr[5] = new int(6);
// 释放原数组内存
for(int i=0; i < 5; i++) {
delete arr[i];
}
delete[] arr;
// 将新数组赋值给原数组
arr = newArr;
// 输出数组元素
for(int i=0; i < 6; i++) {
std::cout << *arr[i] << " ";
}
// 释放新数组内存
for(int i=0; i < 6; i++) {
delete arr[i];
}
delete[] arr;
return 0;
}
运行结果:
1 2 3 4 5 6
在上面的示例代码中,我们首先使用new
关键字动态分配了一个大小为5的指针数组arr
,然后为每个指针分配内存并赋值。接着创建了一个更大的指针数组newArr
,将旧数组元素复制到新数组中,并向新数组添加新元素。最后释放原数组内存,将新数组赋值给原数组,并输出数组元素。
以上是向数组添加元素的几种方法,每种方法都有其优缺点,需要根据实际需求选择最适合的方法。