无需复制即可从C数组(column-major)转换为armadillo矩阵(arma :: mat)

时间:2016-01-14 07:54:25

标签: c++ c armadillo

我有一个指向列主要C双数组的指针,它希望转换为arma::mat,我从文档中理解这是一个列专业。

我见过函数std::transform,但我相信std中的矩阵是行主要的。在armadillo包中,conv_to<mat>::from()似乎与std::arrayarma::mat一起使用,这是否适用于列主要C数组?

请问如何将C结构传递给arma::mat而不复制并返回C数组?

非常感谢

1 个答案:

答案 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
  •