使用什么构造函数

What constructor use

本文关键字:构造函数 什么      更新时间:2023-10-16

我必须设计一个继承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;编译和工作呢?

您只需要operator()(std::size_t, std::size_t)可能同时需要const和非const过载。

但是,我强烈建议不要从标准容器继承。