【发布时间】:2013-05-06 22:15:58
【问题描述】:
我有一个类定义一个维度为 mxn 的矩阵,如下所示:
class Matrix{
protected:
int m;
int n;
double* mat:
public:
// accessors, constructors, destructors, etc.
void assignvalue(int, int, double);
}
现在,如果我需要在位置 i,j 上分配一个值,我有一个函数 assignvalue,它采用位置 i,j 并执行魔术并为该位置分配一个双精度值。但是,如果我能像您在 matlab 或 R 中那样分配一个值,那就太好了。
mymatrix(i,j) = 1.0;
你能告诉我我需要重载哪些运算符吗?谢谢。
【问题讨论】:
-
Morwenn 的回答是正确的,但我的经验法则是尽量不要重新发明轮子。查找已经提供线性代数运算的库。最近一直在用Eigen3,很满意。
-
这是一个论文项目,部分问题是重新发明轮子。但感谢您的建议。这是有道理的。
-
当然!每个人都应该重新发明轮子一次,只是为了了解它是如何工作的。但不适用于生产代码。
标签: c++ overloading operator-keyword numerical-methods