所以我读到了几个非常适合矩阵运算的C ++库(如Armadillo和Eigen)。但是这些支持二维数组吗?例如:
double[][] arr;
// fill arr
// ...
Matrix m(arr);
// create another Matrix a
// do for example m.a
最好不要在arr。
中深度复制数据谢谢。
答案 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);