二维数组
二维数组定义:
一般形式:类型说明符 数组名[常量表达式1][常量表达式2]
int a[2][3];
用C++ STL的vector定义:
vector< vector<int> > Array( 2, vector<int>(0) ); //定义行数为2
for(int i=0; i<2; i++)
Array[i].resize(3); //定义列数为3
二维数组的初始化:
分段赋值:int a[2][3]={{1, 2, 3},{4, 5, 6}} //行中的常量表达式可以省略;列中的不可或缺
连续赋值:int a[2][3]={1, 2, 3, 4} //部分元素赋值,其后自动赋值为0
二维数组的参数传递:
void fun(int a[][3]){...} //注意数组a传递参数后则退化为指针
二维数组的动态分配与释放:
int **a=new int*[2];
for(int i=0; i<2; i++){
a[i]=new int[3];
}
////////////////////////////
for(int i=0; i<2; i++){
delete[] a[i];
}
delete[] a;
二维数组的指针:
int **p=a; //指针p相当于a
*p <=> a[0] ; *(p+i) <=> a[i] ; *(*(p+i)+j) <=> a[i][j]
二维数组的行列计算:
总大小:T=sizeof(a)/sizeof(a[0][0])
列数:N=sizeof(a[0])/sizeof(a[0][0]); Array[0].size() //vector类型需要深入“内部”找到列的大小
行数:M=T/N; Array.size() //vector类型直接能找到行的大小