这是一个非常简单的问题 - 使用三角矩阵和在C ++中使用稀疏矩阵的最佳实践是什么?
对于三角矩阵,我建议数据格式一样简单
double* myMatrix;
int dimension;
作为自定义类中的数据结构。 (我建议它是一个完整形式的方阵。)并且会有设置和访问元素的方法。
对于稀疏矩阵 - 我知道一些方法,比如保存行/列中元素的位置及其值。这是你的经验的问题 - 稀疏矩阵的哪个实现是最好的?
P.S。更少的内存,更少的CPU使用 - 这是我的目标,我正在寻找最好的解决方案,而不是最简单的解决方案。所有矩阵将用于求解线性方程组。矩阵的大小将是巨大的。
非常感谢您的每一条建议!
答案 0 :(得分:1)
如果您不了解矩阵的结构,那么它基本上与地图相同。您可以使用std::map<std::pair<int,int>,double>
。或者如果你拥有它,也许std::unordered_map
。