我想做的基本上是实现这个功能:
template<typename T>
Matrix<T, Dynamic, Dynamic, ColMajor>* dataToEigen(T* const data, const int rows, const int cols);
无需复制任何数据。我知道完成这样的事情的标准方法是使用地图,但我对这种方法有几个问题。
我不想重写我的其余代码以接受 Maps 作为输入(即不将 Map 复制到临时矩阵中)。我知道我可以通过泛化我的函数以将 MatrixBase 对象作为输入来做到这一点,但是我在输入中定义了特定的 Matrix 模板是有原因的 - 如果我的函数需要 a
Matrix<T, Dynamic, Dynamic, ColMajor>
,那是因为只有该类型的矩阵应该用作输入。理想情况下,我希望创建的 Matrix 拥有数据指针的所有权,因此我可以通过 shared_ptr 管理 Matrix 而不必再次触摸原始数据指针。
我最初的想法是我可以做一些事情,比如创建一个未初始化的动态大小的 Matrix 对象,然后只设置对象的尺寸和数据指针,但这在 Eigen API 中似乎是不可能的。有谁知道任何解决方法?