我有一个对称矩阵,用这个问题(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);
};