c++ - 非特征 float* 到 eigen::MatrixXf 的深层复制

标签 c++ eigen

如果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/

相关文章:

c++ - 是否可以使用 TinyXML2(或任何其他库)将结构或类直接转换为 XML 文件,反之亦然?

C++ regex_search 与 perl 中的正则表达式匹配

c++ - Eigen 的 triangularView 问题

c++ - Eigen - 将每个(稀疏)矩阵行除以其对应的对角线元素

c++ - Eigen:稀疏-密集积到普通 C++ 数组

c++ - 如何在 C++ 中实现以逗号分隔的初始化,例如 Eigen 中的初始化?

c++ - 将类作为模板参数,并将类构造函数的参数作为方法参数的方法

c++ - 如何在 x64 代码中获取 exp() 函数的内在函数?

c++ - 什么是复制省略和返回值优化?

C++ Eigen 只读稀疏 block 子表达式?怎么写?