У меня есть симметричная матрица, представленная как в этом вопросе ( Как хранить симметричную матрицу? ). И мне нужно получить элементы 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);
};