1.指针
创建二维动态数组_牛客题霸_牛客网 (nowcoder.com)
使用指针的指针
使用指针的指针可以很方便地创建动态的二维数组,其关键在于使用两层指针进行分配。
以下是一个动态创建n
行m
列的二维数组的示例代码:
int **arr = new int*[n]; // 创建一个指针数组,每个指针可以指向一维数组
for(int i=0; i<n; ++i)
{
arr[i] = new int[m]; // 开辟每个二维数组的空间
}
在使用完这个二维数组后,需要对所有分配的内存进行释放,代码如下:
for(int i=0;i<n;i++)
{
delete arr[i];
}
arr=NULL;
2.vector数组
使用 C++ 的 vector 可以更方便地动态创建二维数组,减少了手动释放内存的麻烦。
以下是创建 n 行 m 列的二维数组的示例代码:
#include <vector>
#include<iostream>
using namespace std;
int n = 3, m = 4; // 定义行和列
vector<vector<int>> arr(n, vector<int>(m, 0)); // 创建二维数组,初始化所有元素为0
这里了解一下vector的构造函数
在这个示例代码中,一个 vector<vector<int>> 数据类型的对象 arr
被创建了出来,并且它的大小是 n 行 m 列。注意 vector 对象的大小是通过其构造函数来确定的。
与前面介绍的方法不同,创建二维 vector 不需要显式调用 new,也不需要手动释放内存。vector 对象将在其作用域结束时自动销毁并释放内存。
访问二维 vector 数组的元素时,可以使用如下代码:
arr[i][j] = 1; // 给arr[i][j]赋值为1
同样地,vector 对象的大小是由其构造函数所确定的。如果要向其添加新元素,可以使用如下代码:
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
arr[i][j] = i + j;
}
}
至此,我们完成了动态创建一个二维 vector 数组,并初始化所有元素为0。由于 vector 使用内存效率较低,因此在处理大量数据的情况下,手动动态分配内存可能更加高效。