我有以下代码使用Eigen C++库.
void myFunc(Eigen::MatrixXf& myrow)
{
myrow.setOnes();
}
int main()
{
Eigen::MatrixXf A(2,3);
Eigen::MatrixXf tmp1(1,3);
myFunc(tmp1);
A.row(1) = tmp1;
std::cout<<"A is..\n"<<A<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,为了操纵Matrix A的行,我使用了临时变量"tmp1".是否可以在不使用任何临时变量的情况下完成?我不想将整个矩阵"A"作为参数传递给函数.请注意,"myFunc"仅仅是一个例子,我可能需要在函数内部做一些复杂的操作来操作"A"行.还请注意,有时我想在示例中给出"myFun".所以我需要一个适用于这两种情况的解决方案.
Eigen支持引用给定矩阵中的子矩阵的块表达式.您可以将此块直接传递给您的函数:
void myFunc(Eigen::MatrixXf::RowXpr myrow)
{
myrow.setOnes();
}
...
myFunc(A.row(1));
Run Code Online (Sandbox Code Playgroud)
块表达式为Block.