动态定义二维数组的方法

建立动态二维数组的函数

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

posted @ 2013-12-05 17:02  千手宇智波  阅读(531)  评论(0编辑  收藏  举报