今天考PAT要动态申请二维数组,当时没有new出来,然后用 vector<vector<int>> 代替了。当时答案做对了,但是总是觉得很二,考试结束后赶紧补了一下。vs里动态申请二维数组,主要两种方法吧:
1, 先声明一个指向指针的指针,然后赋予一个指针数组。
int ** flag = new int * [m];
for(int i=0; i<m; i++)
flag[i] = new int [n];
//销毁
for(int i=0; i<m; i++)
delete [] flag[i];
delete [] flag;
2, 用一维数组。
int * a = new int[m*n];
int ** matrix = new int * [m];
for(int i=0; i<m; i++)
matrix[i] = a + i*n;
delete [] matrix;
3,看了leetcode解题报告后,发现申请二维数组,还是用vector比较好,方便和高效,具体如下:
vector<vector<int>> ararry(row_num, vector<int>(col_num, 0));
麻蛋,不仅申请好了 内存连续的动态数组,而且初始化都TMD搞定了,确实方便。