我正在写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++();//???
...
};
任何意见或方向,将不胜感激。
更新:它需要在整个矩阵上运行。这就是为什么我认为我需要移动(通过引用)阵列和矩阵的大小。预期的效果是,这将从第一行的链表中的最后一个单元格到第二行中的第一个单元格。
我不确定你想要做什么。在operator ++()中,你不能只是做CellPointer = CellPointer-> Right; ?当然,它只会在它到达矩阵的右端边缘之前工作。 – csl 2008-12-30 10:17:21