c++ - Armadillo C++-从const内存初始化只读矩阵,无需复制

标签 c++ arrays pointers constants armadillo

此处给出了一个很好的答案,说明如何围绕现有内存创建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/

相关文章:

c++ - 在arduino中解析canbus数据的最佳方法?

c++ - 使用 boost::asio 的 AF_NETLINK (netlink) 套接字

c++ - Boost::Serialise 中用于序列化类的非侵入式方法是否使类可序列化?

java - 用户输入int到Array然后使用冒泡排序对数字进行排序

C: int string 接受所有值,但只有一个?

c - 使用 void 指针将 float 存储到数组中

c++ - 运算符重载的基本规则和惯用法是什么?

php - 使数组中的每个第一个字符大写

arrays - Scala 二维数组按主列和辅助列排序

c++ - 将 c 字符串的地址转储到 ostream?