c++定义二维数组的不同方式:
指定大小,如:
const int MAXN = 20;
int a[MAXN][MAXN];
但这样无法做为函数参数传递。
定义大小为变量:
int a[n][n];
这在vs中会报错,但是g++和clang均可编译。但是形参为动态int**时传递参数会报错:
no known conversion from ‘int [n][n]’ to ‘int **’ for 2nd argument
形参给定第二维的大小时可以传递。
动态申请内存:
int **array = new int *[size];
for(int i = 0; i<size; i++)
{
array[i] = new int[size];
}
可以传递给形参为int**
的函数。
使用STL中的vector容器,头文件为<vector>
:
vector<vector <int> > array(size, vector<int>(size));
有的版本中不能写成int>>
需写成int> >
。