北京大学C++程序设计coursera课程第七周编程填空题

描述

实现一个三维数组模版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 }

猜你喜欢

转载自www.cnblogs.com/xuhaoforwards/p/9316916.html