Я пишу разреженный матричный класс в C ++, в котором каждая строка и столбец являются массивами связанных списков из созданного мною класса (точно названного: LinkedList).
Я хочу написать класс, который будет «умным» указателем на одну ячейку в этой матрице.
В этом классе, скажем, LIPointer
, я реализую операторную функцию ++
для перемещения в связанных списках матрицы.
Существует ли элегантный способ сделать это, не перемещая ссылки на матричные массивы и элементы размеров каждый раз, когда я создаю linkedlistPointer
?
Я не могу использовать stl::array
и т. Д., Потому что я должен построить их сам.
Вот декларации:
class LinkedItem
{
private:
int Column, Row;
double Value;
LinkedItem* Right;
LinkedItem* Down;
public:
...
};
class SparseLinkedMatrix
{
private: //members
int ColSize;
int RowSize;
LinkedItem ** Columns;
LinkedItem ** Rows;
public: //functions
SparseLinkedMatrix();
...
};
class LIPointer;
private:
LinkedItem * CellPointer;
public:
LIPointer();
void operator++();//???
...
};
Буду признателен за любые советы или указания.
Обновление : он должен работать на всей матрице. Вот почему я думаю, что мне нужно переместить (по ссылке) массивы и размер матрицы. Предполагаемый эффект состоит в том, что это будет от последней ячейки в связанном списке первой строки до первой ячейки во второй строке.