如何使用算子获得对称矩阵的第i,j个元素

时间:2019-05-15 21:31:51

标签: c++ templates overloading operator-keyword

我有一个对称矩阵,用这个问题(How to store a symmetric matrix?表示。而且我需要使用重载运算符[]

来获取i,j个元素

在上面的问题中,有一些方法选项,但没有运算符。因此,我试图寻找其他东西。我看到了如何在通用矩阵上执行此操作,但是没有关于矩阵的信息,用矢量表示

int fromMatrixToVector(int i, int j, int N)
{
   if (i <= j)
      return i * N - (i - 1) * i / 2 + j - i;
   else
      return j * N - (j - 1) * j / 2 + i - j;
}
template<typename T, int M, int N>
class SimMatrix
{
private:
    T a[N / 2 * (N + 1)];
    int k;

public:
    SimMatrix();
    //**************
    class Row{
    private:
        SimMatrix *m;
        int i;
    public:
        Row(SimMatrix *m, int i);
        T& operator[] (int j)
    };

    SimMatrix::Row operator[] (int i)
    {
        return Row(this, i);
    }
    //**************
...
    Row operator[] (int i);
   };

0 个答案:

没有答案