如何以嵌套方式重载[]运算符?

时间:2014-12-30 14:43:54

标签: c++ operator-overloading

我试图实现一个快速的Matrix类(完成特征值和快速指数和反转)。你可能会猜到这包含了很多运算符重载,现在我试图重载[]以便

matrix A(3,3);
A[i][j]  // A[i][j] returns the matrix element at ith row and jth collumn in matrix

这是我到目前为止所拥有的

class matrix
{
public:
int row,col;
vector< vector<long long int> > a;

matrix(int x,int y)
{
    row = x;
    col = y;
    a.resize(x);
    for(int i=0;i<x;i++)
        a[i].resize(y);
}

vector<long long int>& operator[](int i)
{
    return a[i];
}

matrix operator*(const matrix &M)
{
    matrix __A(row,M.col);

    for(int i=0;i<row;i++)
        for(int j=0;j<row;j++)
            for(int k=0;k<M.col;k++)
                __A.a[i][j] += (M.a[k][j] * a[i][k]);

    return __A;
}
};

然而,这里A [i]返回vector<long long int>,然后我做A [i] [j]它应该给long long int。它有点工作,但我不满意,我怎么让A [i] [j]直接返回"%lld"? 我试过了

 long long int& operator[][](int i, int j)
 { return a[i][j]; }

但事实上,它对我没用。如何重载操作员直接获取值? (此外,欢迎提出改进现有课程的任何提示:))

0 个答案:

没有答案