C ++中的三角形和稀疏矩阵

时间:2012-04-14 19:34:52

标签: c++ performance memory-management sparse-matrix

这是一个非常简单的问题 - 使用三角矩阵和在C ++中使用稀疏矩阵的最佳实践是什么?

对于三角矩阵,我建议数据格式一样简单

double* myMatrix;
int dimension;

作为自定义类中的数据结构。 (我建议它是一个完整形式的方阵。)并且会有设置和访问元素的方法。

对于稀疏矩阵 - 我知道一些方法,比如保存行/列中元素的位置及其值。这是你的经验的问题 - 稀疏矩阵的哪个实现是最好的?

P.S。更少的内存,更少的CPU使用 - 这是我的目标,我正在寻找最好的解决方案,而不是最简单的解决方案。所有矩阵将用于求解线性方程组。矩阵的大小将是巨大的。

非常感谢您的每一条建议!

1 个答案:

答案 0 :(得分:1)

如果您不了解矩阵的结构,那么它基本上与地图相同。您可以使用std::map<std::pair<int,int>,double>。或者如果你拥有它,也许std::unordered_map