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);
这里给出了关于如何围绕现有内存创建犰狳矩阵的一个很好的答案: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);