我必须设计一个继承自vector<vector<int>>
的int2d类,以便代码如下:
int main()
{
int2d t1(4, 3);
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 3; j++)
{
t1(i, j) = i + j;
}
}
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 3; j++)
cout << t1(i, j) << " ";
{
cout<<endl;
}
}
}
...产生以下结果:
0 1 2
1 2 3
2 3 4
3 4 5
我已写过:
class int2d : public vector<vector<int>> {
public:
vector<vector<int>> vec;
int a;
int b;
//vector<int> tmp;
//vector<vector<int>> vec(b);
int2d(int a, int b) {
vector<int> tmp(b);
vector<vector<int>> vec(a);
for(int i = 0; i < a; i++) {
vec.push_back(tmp);
}
}
int2d& operator = (const int2d& X){
if (this == &X)
return *this;
int2d tmp(X.a, X.b);
}
int2d& operator = (const int& X){
vec[a][b] = X;
}
};
但是如何让t1(i, j) = i + j;
编译和工作?
答案 0 :(得分:0)
您只需要operator()(std::size_t, std::size_t)
可能同时包含const
和非const
重载。
我强烈建议不要继承标准容器。只需将标准容器作为您班级的成员。