原博客地址:http://blog.csdn.net/longshengguoji/article/details/11131365
C++建立动态二维数组主要有两种方法:
1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组
int **b=new int*[row]; //分配一个指针数组,将其首地址保存在b中
for(i=0;i<row;i++) //为指针数组的每个元素分配一个数组
b[i]=new int[col];
该方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组:
for(i=0;i<row;i++)
{
delete [col]b[i];
b[i]=NULL;
}
delete [row]b;
b=NULL;
int main( ) { int row,column; cin>>row>>column; int ** a = new int *[row]; for ( int i = 0;i < row;i++) a[i] = new int [column]; for ( int j = 0;j < row;j++) for ( int k = 0;k< column;k++) a[j][k] = rand()%100; for ( int j = 0;j < row;j++) { cout<<endl; for ( int k = 0;k< column;k++) { a[j][k] = rand()%100; cout<<a[j][k]<<" " ; } } for ( int i = 0;i < row;i++) { delete a[i]; a[i] = NULL; } delete [row]a; a = NULL; return 0; }
运行结果:
2.利用vector
int main() { int row,column; cin> > row > > column; //方法二 //申请空间 vector< vector < int > > a(row,vector < int > (column)); //使用空间 for(int j = 0 ;j < row ;j++) for(int k = 0 ;k < column ;k++) a[j][k] = rand()%100; for(int j = 0 ;j < row ;j++) { cout< < endl ; for(int k = 0 ;k < column ;k++) { a[j][k] = rand()%100; cout< < a [j][k] < < " "; } } return 0; }
运行结果为: