如果x
是 float 的非特征向量,我可以通过以下方式将其映射到eigen::MatrixXf
:
MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);
但是,对 x_cen
的修改也会报告给 x
,因为它们共享内存。我想要的是避免这种情况。我想将 x
深度复制到 eigen::MatrixXf
x_cen
以确保对 x_cen
进行的更改code> 不会报告给 x
。怎么可以这样
完成了吗?
最佳答案
您的代码:
MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);
已经在进行深拷贝了!所以你很好。 Eigen 中没有浅拷贝。
为了完整起见,我们可以命名 Map<>
反对像MatrixXf
一样使用它:
Map<MatrixXf> x_cen(*x,*n,*p);
在这种情况下,并且仅在这种情况下,修改 x_cen
将举报至x
.
关于c++ - 非特征 float* 到 eigen::MatrixXf 的深层复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14532679/