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

需要执行矩阵运算时的内存效率 我从事物理研究,并上了C++的入门课程。在我的研究中,我需要对3nx3n阶的非常大的矩阵进行计算,并将它们相乘,其中N可能超过100。我使用多维数组编写了一个工作代码,但是当我从文件(它是一个非常大的文件)读取数据时,程序崩溃了,我知道它可以使用较小的矩阵,因为我已经测试过它。我在网上四处查看,很多人提到C++中使用矩阵类,但是这样更有效吗?而且,我没有在C++课程中复习,所以我一直在网上阅读一些教程,但是我似乎无法掌握它们对矩阵的帮助。因此,如果它们比多维数组更有效,有人可以发布一个带有一类矩阵的代码的小示例,这样我就可以看到如何做到这一点。感谢,c++,class,matrix,C++,Class,Matrix,你有没有课的C++课程?!这是它从C演变而来的特性。一个工作名称是“C with class”。每一个优秀的C++语言库都将大量使用它们和模板。 如果你把它用于研究,我真的建议你使用图书馆。您只需学习如何使用它,就可以依靠正确性和最佳效率 有很多,我不能真正推荐一个,因为我从来没有使用过一个适合你的目的,但我听说它在解决问题方面会很好。你可能想使用std::vector而不是数组 数组的问题是,您需要事先知道大小。对于大型或大型阵列,您可能需要从动态内存中分配它们,而不是将它们声明为静态或全局。

你有没有课的C++课程?!这是它从C演变而来的特性。一个工作名称是“C with class”。每一个优秀的C++语言库都将大量使用它们和模板。 如果你把它用于研究,我真的建议你使用图书馆。您只需学习如何使用它,就可以依靠正确性和最佳效率


有很多,我不能真正推荐一个,因为我从来没有使用过一个适合你的目的,但我听说它在解决问题方面会很好。

你可能想使用
std::vector
而不是数组

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


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

我已经使用了Eigen,并且会说它是一个很好的库,可以使用(而且也只能使用header!)。对C++线性代数库有一个很好的讨论,在Web上搜索“C++ FAQ矩阵”,它将给出一个矩阵类的例子。