【发布时间】:2013-06-10 21:12:13
【问题描述】:
我正在为数值计算制作自定义向量和矩阵类。
我想将矩阵的每一行和每一列都视为一个向量。另外,我不想使用额外的内存,因此,我创建了 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 的原因不清楚。我想使用上面的那个。这类问题有什么绝妙的解决方案吗?
【问题讨论】: