此处给出了一个很好的答案,说明如何围绕现有内存创建Armadillo矩阵: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);
关于c++ - Armadillo C++-从const内存初始化只读矩阵,无需复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60148457/