-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsolution7-1.cpp
71 lines (68 loc) · 1.54 KB
/
solution7-1.cpp
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
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using namespace std;
template<class T>
class CArray3D{
template<class T1>
class CArray2D{
int i;
int j;
T1 **ptr;
public:
CArray2D<T1>() {
}
CArray2D<T1>(int i_, int j_) {
i = i_;
j = j_;
if (i_*j_==0){
ptr = NULL;
}
else{
ptr = new int*[i];
for (int n = 0; n < i; n++) {
ptr[n] = new int[j];
}
}
}
CArray2D<T1> & operator=(const CArray2D<T1> &a){
if(a.ptr == ptr){
return *this;
}
if(ptr != NULL){
delete[] ptr;
}
ptr = a.ptr;
return *this;
}
T1 * operator[](int i){
return ptr[i];
}
};
private:
int k;
CArray2D<T> *p;
public:
CArray3D<T>(int i_, int j_, int k_) {
k = k_;
p = new CArray2D<T>[i_];
for (int m = 0; m < i_; m++) {
p[m] = *new CArray2D<T>(j_, k_);
}
}
CArray2D<T> operator[](int i_){
return p[i_];
}
};
int main()
{
CArray3D<int> a(3,4,5);
int No = 0;
for( int i = 0; i < 3; ++ i )
for( int j = 0; j < 4; ++j )
for( int k = 0; k < 5; ++k )
a[i][j][k] = No ++;
for( int i = 0; i < 3; ++ i )
for( int j = 0; j < 4; ++j )
for( int k = 0; k < 5; ++k )
cout << a[i][j][k] << ",";
return 0;
}