Armadillo C ++:将子矩阵传递给函数

时间:2015-01-05 20:02:45

标签: c++ armadillo

我正在使用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)

(确实有效,但涉及额外的代码行)。

1 个答案:

答案 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:");
}