使用 Eigen C++ 库,如何制作矩阵的深层拷贝?例如,如果我有:
Eigen::Matrix4f A;
Eigen::Matrix4f B = A;
然后我修改
A
,它也会修改 B
.但我要B
原版元素的拷贝A
.我怎样才能得到这个?
最佳答案
请勿使用 auto
初始化矩阵时,因为它会使 A = B
一个浅拷贝。 auto
还会造成其他意想不到的结果 .使用 MatrixXd
反而。
#include <iostream>
#include "Eigen/Dense"
using namespace Eigen;
typedef Matrix<double,Dynamic,Dynamic,RowMajor> MyMatrix;
int main()
{
double a[] = {1,2,3,4};
auto M = Map<MyMatrix>(a, 2, 2);
auto G = M;
MatrixXd g = M;
G(0,0) = 0;
std::cout << M << "\n" << std::endl;
std::cout << G << "\n" << std::endl;
std::cout << g << "\n" << std::endl;
}
代码将输出:
0 2
3 4
0 2
3 4
1 2
3 4
关于c++ - Eigen:如何制作矩阵的深层拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231798/