来源https://blog.csdn.net/guaiguaihenguai/article/details/78565049
法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];
#include<bits/bits/stdc++.h> using namespace std; int main() { int **arr=NULL; int row=5; int col=5; arr=new int*[row]; for(int i=0;i<col;i++) arr[i]=new int[col]; //int *arr; //arr= new int[5]; return 0; }
法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);//设置每一行的元素个数,即列数
vector<vector<int>> dp(weight.size(), vector<int>(bagweight + 1, 0));