动态创建二维数组的两种方法

首先来讲解一下什么是二维数组。其实二维数组也可以说是一个一维数组,只是这个一维数组比较特别,它的每一个元素都是一个一维数组。虽然二维数组在底层是按照一维数组的存储方式来存储的,即存完第一行,紧跟着存第二行,后边依次存储剩下的行。但是我们习惯上把它看做矩阵,一般也选择让他以矩阵的方式呈现在我们眼前,所以二维数组也称为矩阵。

方法1

既然二维数组也可以称为矩阵,那么我们就可以给二维数组的每一行开辟一块空间,然后再用一块空间把这些空间的行存放和管理起来,这块空间显然就是一个指针数组,数组的每一个元素都是一个指向一个数组的地址。

看代码

 int **arr = NULL;
 int row = 5;//用于表示行数
 int col = 5;//用于表示列数
 arr = new int*[row];//开辟一块内存来存放每一行的地址
 for (int i = 0; i < row; i++)//分别为每一行开辟内存
 	arr[i] = new int[col];

方法2

利用vector来创建一个二维数组

上边说了二维数组也可以说是一个一维数组,它的每一个元素都是一个一维数组。而vector的底层就是一个数组,如果将vector的类型给个vector类型,就是一个二维数组了。

看代码:

 

int row = 6;
int col = 6;
vector<vector<int>> array(row);//创建一个有row行的二维数组arr
for (int i = 0; i < col; i++)
     array[i].resize(col);//设置每一行的元素个数,即列数

 

展开阅读全文

没有更多推荐了,返回首页