描述
实现一个三维数组模版CArray3D,可以用来生成元素为任意类型变量的三维数组,使得下面程序输出结果是:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,
注意,只能写一个类模版,不能写多个。
无复合类定义实现:
1 #include <iostream> 2 using namespace std; 3 template <class T> 4 class CArray3D 5 { 6 private: 7 T *** array; 8 int r,c,l; 9 public: 10 CArray3D(int _r, int _c, int _l) 11 { 12 array = new T **[_r]; 13 for(int i = 0;i<_r; i++) 14 { 15 array[i] = new T*[_c]; 16 } 17 for(int i = 0;i<_r; i++) 18 { 19 for(int j=0; j<_c; j++) 20 { 21 array[i][j] = new T[_l]; 22 } 23 } 24 r = _r; c = _c; l = _l; 25 } 26 27 ~CArray3D() 28 { 29 for(int i = 0;i<r; i++) 30 { 31 for(int j=0; j<c; j++) 32 { 33 delete []array[i][j]; 34 } 35 delete []array[i]; 36 } 37 delete []array; 38 } 39 int ** operator[] (int index) 40 { 41 return array[index]; 42 } 43 44 }; 45 46 47 int main() 48 { 49 CArray3D<int> a(3,4,5); 50 int No = 0; 51 for( int i = 0; i < 3; ++ i ) 52 for( int j = 0; j < 4; ++j ) 53 for( int k = 0; k < 5; ++k ) 54 a[i][j][k] = No ++; 55 for( int i = 0; i < 3; ++ i ) 56 for( int j = 0; j < 4; ++j ) 57 for( int k = 0; k < 5; ++k ) 58 cout << a[i][j][k] << ","; 59 return 0; 60 }