动态定义二维数组的方法
建立动态二维数组的函数
void create2Darray(T **&x,int row,int col) { //建立一个一维数组,用于保存每行的首指针 x = new T *[row]; //为每一行的首指针分配col列数据 for(int i=0;i<row;i++) x[i] = new T [col]; }
释放动态二维数组的函数
void delete2Darray(T **&x,int row) { //通过每行的首指针释放每行的数据 for(int i=0;i<row;i++) delete [] x[i]; //释放用于指向每行的首指针 delete [] x; }
一个示例程序:
#include<iostream> using namespace std; template <class T> void create2Darray(T **&x,int row,int col) { //建立一个一维数组,用于保存每行的首指针 x = new T *[row]; //为每一行的首指针分配col列数据 for(int i=0;i<row;i++) x[i] = new T [col]; } template <class T> void delete2Darray(T **&x,int row) { //通过每行的首指针释放每行的数据 for(int i=0;i<row;i++) delete [] x[i]; //释放用于指向每行的首指针 delete [] x; } int main() { char ** a; int row,col; cin>>row>>col; create2Darray(a,row,col); for(int i=0;i<row;i++) { for(int j=0;j<col;j++) cin>>a[i][j]; } for(int i=0;i<row;i++) { for(int j=0;j<col;j++) cout<<a[i][j]<<" "; cout<<endl; } delete2Darray(a,row); return 0; }
示例数据:
3 4
q w e r
a s d f
z x c v
q w e r
a s d f
z x c v