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"

                     

© 小时科技 保留一切权利