C++ 基础

                     

贡献者: addis

   Matlab 和 Python 等动态语言虽然用起来方便,但缺点是运行较慢,对于一些计算量大的项目不适合。目前在高性能计算中广泛使用的只有两种语言即 C++ 和 Fortran。虽然 Fortran 普遍被认为是一个过时的语言,但在计算物理中,许多人仍然在使用,一是因为以前遗留下的 Fortran 代码比较多,二是一些年纪较大的学者只会 Fortran。

   一本在数值算法中很有名的书是 Numerical Recipes,这本书第三版以前都使用 Fortran 或 C,而第三版却只有 C++,这也是本部分选择介绍 C++ 而不是 Fortran 的原因之一。本部分将从 Numerical Recipes 中借鉴许多代码上的风格和算法。

   C++ 的特征实在多不胜数,事实上无论是什么语言,做计算物理的研究者大多会倾向于只选择一些最基础的语法来使用。我们在这里列出本部分使用的 C++ 特性。

   在学习基本 C++ 语法时,强烈建议在 Jupyter Notebook 中使用 cling 解释器。这将节约大量的编译时间。

1. 基础语法

explicit 类型转换

2. 标准库

高级

3. 较高级的功能

4. 高级功能


1. ^ 例如 #define MYFUN1(x) x*x,那么 MYFUN1(abcd) 就展开为 abcd*abcd#define MYFUN2(x) #x,那么 MYFUN2(abcd) 就展开为 "abcd"#define MYFUN3(x,y) a##x##y##f,那么 MYFUN3(bc,de) 展开为 abcdef。注意作为宏函数自变量的宏名不会展开,例如 #define NUM 5,那么 MYFUN1(NUM) 先展开为 NUM*NUM 再进一步展开为 5*5。又例如 MYFUN2(NUM) 会展开为 "NUM",但字符串不会作为宏进一步展开。宏函数体中双引号内的东西都不会展开,例如 #define MYFUN4(x) "x",那么 MYFUN4(abc) 仍然展开为 "x"


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利