作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想将 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/
我想将 Eigen::ArrayXXd 类型的数组移动(或交换)到 Eigen::MatrixXd。为此,我尝试了, #include #include using namespace std;
如何将 ArrayXXd 数组转换为 MatrixXd?到目前为止,我已经完成了 MatrixXd temp_mat = my_array; 并且隐式转换似乎工作正常,但这是应该完成的方式吗?或者我应
我是一名优秀的程序员,十分优秀!