我目前正在使用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())
}
答案 0 :(得分:3)
它会进行深层复制,MySQLdb
也可能被声明为const引用。如果你想要一个浅拷贝,那么你必须明确地使用它,例如sourceMatrix
对象:
Ref
有关详细信息和示例,请参阅Ref<MatrixXd> dest(source);
的文档。