我正在解决一个流体问题,其中形成了非常大的稀疏矩阵。在Armadillo Sparse Matrix的上下文中,我有一个固定的umat locations
矩阵存储索引和一个变量vec values
的每个位置。在迭代开始之前,我已经使用Armadillo创建了一个稀疏矩阵作为sp_mat A(locations, values)
。在每次迭代中,我需要求解不同的values
,locations
保持不变,我希望A
中的更新值。
我有什么方法可以更新values
中的A
,用batch insertion
替换旧的,或者犰狳提供的任何类似方法?如果不是,那么在Speed的上下文中,最好的方法是什么呢?
元素访问,A(i,j)
是可能的,但由于它的大小,它会减慢进程。批量插入似乎更快且易于管理。
非常感谢!
答案 0 :(得分:0)
使用C ++ 11 / C ++ 14,您可以将batch insertion constructors与std::move()结合使用。例如:
sp_mat X;
X = std::move( sp_mat(locations, values) );
要在 gcc 或 clang 中启用C ++ 11模式,请使用-std=c++11
选项进行编译。