需要进行矩阵运算时的内存效率

时间:2013-07-14 19:23:03

标签: c++ class matrix

我正在从事物理学研究,并参加了C ++的入门课程。对于我的研究,我需要对3N x 3N阶的非常大的矩阵进行计算并将它们相乘,其中N可以超过100.我使用多维数组制作了一个工作代码,但是当我从中读取数据时该文件(它是一个非常大的文件),程序崩溃,我知道它适用于较小的矩阵,因为我已经测试过它。我在网上看了很多人都提到在C ++中使用矩阵类,但是效率更高吗?而且,我没有参加我的C ++课程,所以我一直在网上阅读一些教程,但我似乎无法理解他们如何帮助使用矩阵。因此,如果它们比多维数组更有效,那么有人可以发布一个带有一类矩阵的代码的小例子,这样我就可以看到如何做到这一点。感谢

2 个答案:

答案 0 :(得分:1)

你有没有课程的C ++课程?!它的 特征为什么它从C演化而来。一个工作名称是" C with classes"。每个带有矩阵的优秀C ++库都会大量使用它们和模板。

如果您将其用于研究,我建议您使用库。您只需要学习如何使用它,并且可以依靠正确性和最佳效率。

有很多,我不能真正推荐一个,因为我从来没有使用过符合你目的的那个,但我听说Eigen会很好地解决问题。

答案 1 :(得分:1)

您可能希望使用std::vector而不是数组。

数组的问题是您需要事先知道大小。对于大型或大型阵列,您可能需要从动态内存中分配它们,而不是将它们声明为静态或全局。有些编译器对全局内存量有限制。

std::vector将根据需求增长,而您无需担心调整阵列大小。