在二维数组上使用C ++进行快速简便的矩阵运算

时间:2014-02-14 22:31:47

标签: c++ arrays matrix

所以我读到了几个非常适合矩阵运算的C ++库(如Armadillo和Eigen)。但是这些支持二维数组吗?例如:

double[][] arr;
// fill arr
// ...
Matrix m(arr);
// create another Matrix a
// do for example m.a

最好不要在arr。

中深度复制数据

谢谢。

1 个答案:

答案 0 :(得分:1)

在犰狳中,您可以使用矩阵,无需任何副本。

来自Armadillo文件。

  

mat(aux_mem *,n_rows,n_cols,copy_aux_mem = true,strict = true)

     

使用来自可写辅助存储器的数据创建矩阵。默认情况下   矩阵分配自己的内存并从辅助中复制数据   记忆(为安全起见)。但是,如果将copy_aux_mem设置为false,则   矩阵将直接使用辅助存储器(即没有   复印)。这更快,但除非你知道什么,否则可能很危险   你在干嘛!

例如你可以做

double mem[4][6];
mat H(&(mem[0][0]), 4, 6, false);