我需要在类稀疏矩阵中重载[]运算符。 此运算符必须像2D表访问一样工作。 例如tab [1] [1],返回参考。
问题是我有一个元素向量(struct)。
template <class T>
struct element
{
int x;
int y;
T Value;
};
如果我想访问某个字段,我必须存储来自运营商的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)
要获得自然语法,请让矩阵类返回一个行对象,该对象也会重载[]运算符,然后返回该元素。