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 _tmain(int argc, _TCHAR* argv[]) { 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 _tmain(int argc, _TCHAR* argv[]) { 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; }
運行結果為: