我正在编码一个矩阵计算器,并且希望它能够计算如下运算:2 * A,A * 3(其中A是矩阵)。所以,我这样写:
matrix operator* (double x , matrix mat)
{
matrix temp(mat.n);
for (int i = 0; i < mat.n; ++i)
for (int j = 0; j < mat.n; ++j)
temp.t[i][j] = mat.t[i][j] * x;
return temp;
}
matrix operator* (matrix mat, double x)
{
matrix temp(mat.n);
for (int i = 0; i < mat.n; ++i)
for (int j = 0; j < mat.n; ++j)
temp.t[i][j] = mat.t[i][j] * x;
return temp;
}
(matrix
是类的名称,n是大小(矩阵是正方形),t是静态二维数组t [n] [n])
如您所见,我编码了2个完全相同的函数,唯一的区别是参数的顺序。有什么办法可以将它们合并为一个?除了将x转换为对角矩阵并将其乘以2个矩阵外。
(顺便说一下,这是我在这个论坛上的第一篇文章,所以请不要对我提出如此琐碎的问题太苛刻)
只需使一个函数调用另一个即可:
matrix operator* (double x , matrix mat)
{
matrix temp(mat.n);
for (int i = 0; i < mat.n; ++i)
for (int j = 0; j < mat.n; ++j)
temp.t[i][j] = mat.t[i][j] * x;
return temp;
}
matrix operator* (matrix mat, double x)
{
return x * mat;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句