在编程的时候我们经常不能事先确定要我们用的二维数组的大小,所以关于怎么样动态确定二维数组的大小我们今天来和大家一起学习一下。我们经常按int[x][x]的格式来事先定义二维数组 ,x为一常量,所以我们必须在 获得数组大小的时候进行动态分配。
如:
动态分配二维数据如下:
//定义一个动态分配二维数组的模板
Template<class T>
Void Make2DArray(T** &x , int rows , int cols )
{
//创建行指针
X = new T*[rows] ;
//为每一行分配空间
for( int i= 0 ; i<rows; i++ )
{
x[i] = new int[cols] ;
}
}
释放由Make2DArray()所分配的空间的函数Delete2Array()
template<class T>
void Delete2DArray(T** &x , int rows)
{
//释放为每一行所分配的空间
for( int i = 0 ; i < rows ; i++ )
{
delete[] x[i] ;
}
// 释放行指针
delete[] x ;
x = 0 ;
}
该模板的使用例子如下:
int ** data ;
int row , col ;
Make2DArray<int>(data,row,col) ;
for ( int i = 0 ; i < 3 ; i++ )
for ( int j = 0 ; j < 3 ; j++ )
{
data[i][j] = i*j ;
CString sMsg ;
sMsg.Format(\"i=%d,j=%d,i*j=%d\" , i , j , data[i][j]) ;
AfxMessageBox(sMsg) ;
}
Delete2DArray<int>(data,3) ;
注意:使用模板类时,需要包含头文件#include \"afxtempl.h\"