| 
			
	
	
		    写了一个二维动态数组的函数模板,可以将它封成类使用。  
  #include <iostream> 
  #include <string> 
  
  using namespace std; 
  
  // 初始化动态数组 
  template<class T> 
  void Init2DArray(T** &p, int rows, int cols) 
    { 
  for (int x=0; x<rows; ++x) 
     { 
  for (int y=0; y<cols; ++y) 
     { 
  p[x][y] = T(); 
  } 
  } 
  } 
  
  // 动态创建 2 维数组模板 
  template<class T> 
  void Create2DArray(T** &p, int rows, int cols) 
    { 
  // 创建行指针 
  p = new T* [rows]; 
  // 为每一行分配空间 
  for (int i=0; i<rows; ++i) 
     { 
  p[i] = new T[cols]; 
  } 
  // 初始化 
  Init2DArray(p, rows, cols); 
  } 
  
  // 删除动态数组 
  template<class T> 
  void Delete2DArray(T** &p, int rows) 
    { 
  // 释放每一行的空间 
  for (int i=0; i<rows; ++i) 
     { 
  delete[] p[i]; 
  } 
  // 删除指针 
  delete[] p; 
  p = 0; 
  } 
  
  // 显示动态数组 
  template<class T> 
  void Show2DArray(T** &p, int rows, int cols, string arrayName = "p") 
    { 
  for (int x=0; x<rows; ++x) 
     { 
  for (int y=0; y<cols; ++y) 
     { 
  cout << arrayName << "[" << x << "][" << y << "] = " << p[x][y] << " "; 
  } 
  cout << endl; 
  } 
  } 
  
  int main(void) 
    { 
  // 测试模板函数 
  int **pInt; 
  char **pChar; 
  float **pFloat; 
  int rows = 10; 
  int cols = 5; 
  Create2DArray(pInt, rows, cols); 
  pInt[2][3] = 6; 
  pInt[8][4] = 32; 
  Show2DArray(pInt, rows, cols, "pInt"); 
  Delete2DArray(pInt, rows); 
  
  Create2DArray(pChar, rows, cols); 
  Show2DArray(pChar, rows, cols, "pChar"); 
  Delete2DArray(pChar, rows); 
  
  Create2DArray(pFloat, rows, cols); 
  Show2DArray(pFloat, rows, cols, "pFloat"); 
  Delete2DArray(pFloat, rows); 
  
  system("pause"); 
  return 0; 
  } 
    |