我正在为数值计算制作自定义向量和矩阵类。
我想将矩阵的每一行和每一列都视为一个向量。另外,我不想使用额外的内存,因此,我创建了 VectorView 类,它直接使用矩阵中的数据(如 GSL 库)。这是我的矩阵类的大纲。
class Matrix{
priavte:
T data[];
....
public:
VectorView row(int n);
VectorView colum(int n);
};
我定义了一个使用 VectorView 的函数。
myFunc(VectorView& v);
我的 VectorView 类有一些额外的数据,因此我想使用 VectorView 作为参考来节省内存。
但是,当我调用这样的函数时遇到了问题。
Matrix m;
...
...
myFunc(m.row(i));
问题是 m.row(i) 返回临时对象,因此我不能使用引用类型来处理它。但
auto v = m.row(i);
myFunc(v);
即使使用 v 完全相同但不清楚的原因,这也不会出错。我想使用上面的那个。这类问题有什么绝妙的解决方案吗?