gpt4 book ai didi

C++ Eigen 将 arrayXXd 移动到 MatrixXd

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:12 35 4
gpt4 key购买 nike

我想将 Eigen::ArrayXXd 类型的数组移动(或交换)到 Eigen::MatrixXd。为此,我尝试了,

#include <iostream>
#include <Eigen/Dense>
using namespace std;
int main(int , char** ) {
Eigen::ArrayXXd array(100,100);
auto mat2 = std::move(mat.matrix());
cout << array.size() << endl;
cout << mat.size() << endl;
}

输出显示两个大小都是 10000,这意味着数组已被复制。为了避免复制,我也试过了,

    Eigen::MatrixXd mat;
mat.swap(array.matrix()); (runtime error assert failure)
// swap(array.matrix(), mat); (compile error)

我测试的Eigen版本是3.2.0 beta1,用的是gcc 4.8.0。从实验来看,似乎还没有实现 Matrix 和 Arrays 的移动语义。那正确吗?

有没有一种方法可以安全地移动(无需复制)?

最佳答案

你不能强制移动某些东西。如果 Eigen 没有用于您尝试执行的操作的移动构造函数/赋值运算符(并且我在其文档中没有看到 Eigen 具有移动感知的证据),那么您无法移动它们。

移动不是魔术;它需要类型的作者的明确支持。

关于C++ Eigen 将 arrayXXd 移动到 MatrixXd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16412530/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com