【发布时间】:2022-11-17 21:00:13
【问题描述】:
我有std::vector<double *> x,其中每个元素都指向 C 风格的双精度数组。双数组的值随着我程序的每次迭代而变化。我想将它们的副本创建到 Eigen::ArrayXd x_old 中,这样我就可以用新值计算差异。我试过使用Eigen::Map,但它只复制了一个数组,而且它们仍然在内存方面连接,所以从技术上讲它不是副本。现在我尝试memcpy它,但我只得到第一个数组。谢谢您的帮助
std::vector<double *> x;
x.push_back( new double[2]{1, 2} );
x.push_back( new double[2]{3, 4} );
Eigen::ArrayXd x_old(4);
memcpy(x_old.data(), *x.data(), 4*sizeof(double));
【问题讨论】:
-
你为什么使用
new和double*而不是std::array<double,2>或std::vector<double>? -
我正在使用一个要求它具有这样的库。或者至少根据我的理解,我需要以某种方式传递二维数组。
double const* const* parameters -
好的,这就是原因;)