我正在使用C ++和Armadillo库。我有一个表格
的功能arma::mat foo(arma::mat my_matrix)
我想将my_matrix
的子矩阵传递给foo
。
可以像这样提取子矩阵:
my_matrix.col(0)
但每当我尝试这样做时:
foo(my_matrix.col(0))
我收到编译错误。 如何解决此问题:
mat submatrix = my_matrix.col(0)
foo(submatrix)
(确实有效,但涉及额外的代码行)。
答案 0 :(得分:3)
将输入类型更改为const引用(const arma::mat&
),这允许编译器在这种情况下自动生成临时矩阵。
示例:
using namespace arma;
mat foo(const mat& my_matrix)
{
mat y = my_matrix * 2.0;
return y;
}
void bar()
{
mat x(10,10, fill::randu);
mat y = foo( x.col(0) );
y.print("y:");
}