-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
写一个二维数组类 Array2,使得下面程序的输出结果是:
0,1,2,3,
4,5,6,7,
8,9,10,11,
next
0,1,2,3,
4,5,6,7,
8,9,10,11,
程序:
-
#include <iostream> #include <cstring> using namespace std; class Array2 {
// 在此处补充你的代码
};
int main() {
Array2 a(3,4);
int i,j;
for( i = 0;i < 3; ++i )
for( j = 0; j < 4; j ++ )
a[i][j] = i * 4 + j;
for( i = 0;i < 3; ++i ) {
for( j = 0; j < 4; j ++ ) {
cout << a(i,j) << ",";
}
cout << endl;
}
cout << "next" << endl;
Array2 b; b = a;
for( i = 0;i < 3; ++i ) {
for( j = 0; j < 4; j ++ ) {
cout << b[i][j] << ",";
}
cout << endl;
}
return 0;
}
输入无输出0,1,2,3,
4,5,6,7,
8,9,10,11,
next
0,1,2,3,
4,5,6,7,
8,9,10,11,样例输入
None样例输出
0,1,2,3, 4,5,6,7, 8,9,10,11, next 0,1,2,3, 4,5,6,7,
8,9,10,11,
#include <iostream>
#include <cstring>
using namespace std;
class Array2 {
int l, r;
int **p;
public:
Array2(int a = 3, int b = 4) :l(a), r(b) {
p = new int*[a];
for (int i = 0; i<a; i++) {
p[i] = new int[b];
}
}
~Array2() {
for (int i = 0; i<l; i++) {
delete[]p[i];
}
delete[]p;
}
int* operator [](int a) {
return p[a];
}
int& operator ()(int a, int b) {
return p[a][b];
}
Array2&operator =(const Array2& s) {
l = s.l, r = s.r;
for (int i = 0; i<l; i++)
for (int j = 0; j<r; j++)
p[i][j] = s.p[i][j];
return *this;
}
};
int main() {
Array2 a(3,4);
int i,j;
for( i = 0;i < 3; ++i )
for( j = 0; j < 4; j ++ )
a[i][j] = i * 4 + j;
for( i = 0;i < 3; ++i ) {
for( j = 0; j < 4; j ++ ) {
cout << a(i,j) << ",";
}
cout << endl;
}
cout << "next" << endl;
Array2 b; b = a;
for( i = 0;i < 3; ++i ) {
for( j = 0; j < 4; j ++ ) {
cout << b[i][j] << ",";
}
cout << endl;
}
return 0;
}