风言枫语  

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;
	
}

运行结果为:


 

 

posted on 2013-09-05 18:04  风言枫语  阅读(411)  评论(0编辑  收藏  举报