0

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

4

2 回答 2

1

你有没有课程的 C++ 课程?!这就是它从 C 演变而来特性。一个工作名称是“C with classes”。每个带有矩阵的优秀 C++ 库都会大量使用它们和模板。

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

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

于 2013-07-14T19:38:57.600 回答
1

您可能想要使用std::vector而不是数组。

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

它将按需增长,std::vector而您不必担心调整数组的大小。

于 2013-07-14T20:02:32.087 回答