Armadillo C++ - 从 const 内存初始化只读矩阵而不复制

Armadillo C++ - Initialize read-only matrix from const memory without copying

这里给出了关于如何围绕现有内存创建犰狳矩阵的一个很好的答案:armadillo C++: matrix initialization from array

但我有一种情况,我想从 const 数组创建 Armadillo 矩阵,而不先复制数据。第一部分很简单:

  • mat(const aux_mem*, n_rows, n_cols)

Create a matrix by copying data from read-only auxiliary memory.

然而,这会先复制内存,这对我来说是不必要的。

我想要这样的东西:

const double* ptr = start; // I cannot modify the source of this pointer

const amra::mat M(ptr, 4, 4, /*copy*/ false, /*strict*/ true); 

然而,这个确切的构造函数并不存在。是否有我缺少的替代方法?

使用 const_cast 从指针中删除 const 限定符。

你的情况是 const arma::mat M(const_cast<double*>(ptr), 4, 4, false, true);