特征从Matrix初始化

时间:2016-05-11 12:50:34

标签: c++ matrix eigen

我目前正在使用c ++中的Eigen,有一些关于初始化的事情,我找不到答案。

是否可以使用相同大小的另一个动态矩阵初始化动态矩阵:

MyClass::MyClass(Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> sourceMatrix)
{
    Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> destMatrix(sourceMatrix)
}

以上似乎编译但我的项目目前充满了其他编译​​错误,所以我无法测试它,我想确定它在使用之前会做什么。这会使destMatrix成为sourceMatrix的深层副本吗?还是一个浅薄的副本?

与做什么不同:

MyClass::MyClass(Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> sourceMatrix)
{
    Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> destMatrix(sourceMatrix.data())
}

1 个答案:

答案 0 :(得分:3)

它会进行深层复制,MySQLdb也可能被声明为const引用。如果你想要一个浅拷贝,那么你必须明确地使用它,例如sourceMatrix对象:

Ref

有关详细信息和示例,请参阅Ref<MatrixXd> dest(source); 的文档。