之间是否存在有效的复制机制
std::vector<std::vector<double>> std_mat
arma::mat arma_mat
其中arma :: mat arma_mat指的是犰狳矩阵/数学库。
我的项目依赖于两个独立的矩阵/数据采集库,其中矩阵分别如上定义。但是,在处理管道的某个阶段,我需要将一个复制到另一个,以避免破坏遗留代码。我想知道是否有某种铸造操作员从一个到另一个(因此我们不必复制)或者如果没有,是一种有效的复制机制(类似于vector.emplace_back概念)。现在我使用双循环但我相信它可以更有效率。
答案 0 :(得分:1)
您可以通过改变使用矢量/内存的方式来避免复制。
如果你看documentation
mat(ptr_aux_mem, n_rows, n_cols, copy_aux_mem = true, strict = false)
使用来自可写辅助(外部)内存的数据创建矩阵,其中ptr_aux_mem是指向内存的指针。默认情况下 matrix分配自己的内存并从辅助中复制数据 记忆(为安全起见)。但是,如果将copy_aux_mem设置为false,则 矩阵将直接使用辅助存储器(即没有 复印);这比较快,但除非你知道什么,否则可能很危险 你在干嘛!
如果您知道矩阵具有固定大小,则可以通过提供一块内存来构造mat
。请注意文档说明:
元素以列主要排序(即逐列)存储