【发布时间】:2017-04-16 16:15:09
【问题描述】:
我有几个矩阵定义为:
array <array <float, 3>, 23> mat1;
array <array <float, 23>, 3> mat2;
array <array <float, 2>, 23> mat3;
array <array <float, 23>, 2> mat4;
我有一个矩阵乘法函数定义如下:
void mat_mult(array <array <float, 3>, 23>& a, array <array <float, 23>, 3>& b, array <array <float, 3>, 3>& c);
函数调用使得矩阵mat1 将是a,mat2 将是b,矩阵c 将存储a * b 的结果。
我的理解是,我需要创建一个单独的函数来乘以 mat3 和 mat4。有没有办法避免它并为所有乘法运算创建一个函数,矩阵由std::array 对象组成?或者换句话说,是否可以在不指定任何维度的情况下传递二维数组,然后分别传递维度?
【问题讨论】:
-
你确定 std::array 是这里首选的类型吗?看看this。
-
实际上我认为我犯了一个错误。但是,我正在学习中,我现在不能回到这个特定的项目中。你会说向量是这里的最佳选择吗?
-
是的,在所有用例的 99.99% 中。我也不认为用向量替换这些类型需要做太多的工作。
标签: c++ function matrix matrix-multiplication