我有一个指向列主要C双数组的指针,它希望转换为arma::mat
,我从文档中理解这是一个列专业。
我见过函数std::transform
,但我相信std中的矩阵是行主要的。在armadillo包中,conv_to<mat>::from()
似乎与std::array
或arma::mat
一起使用,这是否适用于列主要C数组?
请问如何将C结构传递给arma::mat
而不复制并返回C数组?
非常感谢
答案 0 :(得分:3)
来自犰狳的文件: (http://arma.sourceforge.net/docs.html#Mat)
高级构造函数
mat(ptr_aux_mem, n_rows, n_cols, copy_aux_mem = true, strict = false)
使用来自可写辅助(外部)内存的数据创建矩阵,其中ptr_aux_mem是指向内存的指针。默认情况下,矩阵分配自己的内存并从辅助内存中复制数据(为安全起见)。但是,如果copy_aux_mem设置为false,则矩阵将直接使用辅助存储器(即不复制);这比较快,但除非你知道你在做什么,否则可能很危险!
只有当copy_aux_mem设置为false(即矩阵直接使用辅助存储器)时,strict参数才会生效。
- 当strict设置为false时,矩阵将使用辅助内存直到大小更改
- 当strict设置为true时,矩阵将在其生命周期内绑定到辅助存储器;矩阵中的元素数量无法更改
- 版本6.000+中的strict的默认设置为false
- 版本5.600及更早版本中的strict的默认设置为true