C++中实现动态数组有多种方式,常见的包括使用指针和STL容器。下面简要介绍一下这两种实现方式。
使用指针实现动态数组
申请动态数组空间
在C++中,我们可以使用new
关键字来动态申请内存空间,然后使用指针来存储这个内存地址。例如,我们可以使用以下代码申请一个长度为10的整型动态数组:
int* arr = new int[10];
访问动态数组元素
当我们申请好了动态数组空间之后,就可以通过指针来访问这个数组,并且像访问普通数组一样使用下标访问数组元素。例如,我们可以使用以下代码给数组第一个元素赋值:
arr[0] = 1;
释放动态数组空间
当我们使用完动态数组之后,需要手动释放申请的内存空间,以免出现内存泄漏问题。我们可以使用delete
关键字来释放内存空间,例如:
delete[] arr;
示例1:求解动态数组元素之和
下面是一个示例程序,用于求解动态数组arr
中所有元素之和:
#include <iostream>
int main() {
int n;
std::cin >> n;
int* arr = new int[n];
int sum = 0;
for (int i = 0; i < n; i++) {
std::cin >> arr[i];
sum += arr[i];
}
std::cout << "The sum of the array is: " << sum << std::endl;
delete[] arr;
return 0;
}
示例2:动态申请二维数组
我们也可以使用指针来申请一维数组,然后将其转换为二维数组。以下是一个示例程序,用于申请一个3x3的二维动态数组,并对其进行初始化:
#include <iostream>
int main() {
int row = 3, col = 3;
int* arr = new int[row * col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i * col + j] = i + j;
std::cout << arr[i * col + j] << " ";
}
std::cout << std::endl;
}
delete[] arr;
return 0;
}
使用STL容器实现动态数组
STL(Standard Template Library)是C++中的标准库,提供了许多数据结构和算法。其中,std::vector
是一个常用的动态数组容器,我们可以使用它来实现动态数组。
定义动态数组
使用std::vector
定义动态数组变量很简单,例如:
#include <vector>
std::vector<int> arr;
这样就定义了一个空的动态数组变量arr
,可以动态向里面添加元素。
添加元素
使用push_back()
函数向动态数组中添加元素,例如:
arr.push_back(1);
如果要一次向数组中添加多个元素,可以使用初始化列表,例如:
std::vector<int> arr = {1, 2, 3, 4};
访问元素
使用下标访问动态数组元素和普通数组一样,例如:
int x = arr[0];
删除元素
使用pop_back()
函数删除数组末尾的元素,例如:
arr.pop_back();
同时也可以使用erase()
函数删除中间的元素,例如:
arr.erase(arr.begin() + 2);
示例1:求解动态数组元素之和
下面是一个示例程序,用于求解动态数组arr
中所有元素之和:
#include <iostream>
#include <vector>
int main() {
int n;
std::cin >> n;
std::vector<int> arr(n);
int sum = 0;
for (int i = 0; i < n; i++) {
std::cin >> arr[i];
sum += arr[i];
}
std::cout << "The sum of the array is: " << sum << std::endl;
return 0;
}
示例2:动态申请二维数组
下面是一个示例程序,用于申请一个3x3的二维动态数组,并对其进行初始化:
#include <iostream>
#include <vector>
int main() {
int row = 3, col = 3;
std::vector<int> arr(row * col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i * col + j] = i + j;
std::cout << arr[i * col + j] << " ";
}
std::cout << std::endl;
}
return 0;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++详解如何实现动态数组 - Python技术站