16

我对各种语言的编程有相当的了解。我一直在使用 MATLAB 实现我的研究代码(在过去的几个月里),并且第一次真正注意到 MATLAB v$ C 的执行速度的差异。(尽管我喜欢极快的原型设计能力)。

我正在寻找 C++ 并开始在我的研究中使用它。我知道 OOP 并且已经编写了相当多的 Java(相对较长的回溯)和 C++(甚至更长的回溯)。我现在想真正深入了解 C++,因此需要有关资源的建议:

  • 我需要掌握哪些 C++ 东西(STL 和。)才能真正充分利用 C++?
  • 什么是入门的好教程/手册?
  • 什么是 C++ 的数值/科学库?GSL?C++ 是否有 Scipy/Numpy 的等效(功能)?

我将在 Linux 上编程,所以我将使用 g++ 。

任何指向以前的 SO 问题的指针也很感激。

4

5 回答 5

7

您将希望尽快掌握并行编程。对于消息传递,我喜欢Karniadakis 和 Kirby的这本书。在有关分布式内存编程的 OpenMP 书籍中,这本是最好的。

如果您可以访问它们,那么英特尔的线程构建模块、数学内核库和集成性能原语是不错的选择。如果没有,有很多开源替代品,请开始查看Netlib

哦,我差点忘了BOOST,这是必须的。

于 2010-11-25T23:14:59.667 回答
5

关于像 Numpy 这样的数值的东西,你应该看看两者:

闪电战++ http://www.oonumerics.org/blitz/

贾马/TNT http://math.nist.gov/tnt/download.html

于 2010-11-25T23:12:39.680 回答
4

在图书馆方面,看看犰狳。它几乎为您提供了 MATLAB 数组操作语法的全部范围,并在后台使用 LAPACK 和 BLAS (ATLAS)。

于 2010-11-29T07:08:33.950 回答
2

本教程绝对震撼,但您可能不想一开始就解决它。

http://www.parashift.com/c++-faq/

确保阅读 STL(标准模板库)和其他内容,使用以下网站:

http://cplusplus.com/

并且,查看 Boost 库:

http://www.boost.org/

要真正充分利用 C++,您至少需要学习 STL,仅此一项就可以为您节省大量时间,但正如 parashift 所提到的,如果您不使用动态绑定,C++ OOP 只能使用对象进行编程。

于 2010-11-25T23:15:54.863 回答
-2

TRNG 是一个并行随机数生成库。它允许您创建多个独立的流,并且专为在集群上使用而设计。

于 2013-08-10T18:37:54.110 回答