稀疏矩阵,重载[] c ++

时间:2013-12-29 10:41:18

标签: c++

我需要在类稀疏矩阵中重载[]运算符。 此运算符必须像2D表访问一样工作。 例如tab [1] [1],返回参考。

问题是我有一个元素向量(struct)。

template <class T>
struct element
{
    int x;
    int y;
    T Value;
};

如果我想访问某个字段,我必须存储来自运营商的2个坐标。 我不知道怎么做。

2 个答案:

答案 0 :(得分:1)

class ElementProxy
{
    Container* myOwner;
    int myRowIndex;
    int myColumnIndex;
public:
    ElementProxy( Container* owner, int rowIndex, int columnIndex )
        : myOwner( owner )
        , myRowIndex( rowIndex )
        , myColumnIndex( columnIndex )
    {
    }

    operator Type() const  //  lvalue to rvalue conversion
    {
        return myOwner->get( myRowIndex, myColumnIndex );
    }

    void operator=( Type const& rhs ) const
    {
        myOwner->set( myRowIndex, myColumnIndex, rhs );
    }
};

class RowProxy
{
public:
    RowProxy( Container* owner, int rowIndex )
        : myOwner( owner )
        , myRowIndex( rowIndex )
{
}
ElementProxy operator[]( int columnIndex ) const
{
    return ElementProxy( myOwner, myRowIndex, columnIndex );
}
};

答案 1 :(得分:0)

要获得自然语法,请让矩阵类返回一个行对象,该对象也会重载[]运算符,然后返回该元素。