Skip to content

Commit

Permalink
docs: update cpp tut
Browse files Browse the repository at this point in the history
  • Loading branch information
liuly0322 committed Dec 3, 2022
1 parent 1ce1251 commit 85868f1
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions docs/resource/cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,16 @@
#include <iostream>

int main() {
int a = 0;
std::cin >> a; // 读入 a
std::cout << a << std::endl; // 输出 a
int a = 0, b = 0;
// 读入 a 和 b (类似于两个 scanf)
std::cin >> a >> b;
// 输出 a 和 b,std::endl 相当于换行
std::cout << a << ' ' << b << std::endl;
}
```

这两个函数可以「流式」输入输出,`stream` 就是流的意思。

这里的 `std``namespace` (命名空间), 用来将代码组织到逻辑组中, 同时防止函数变量等的重名。

> 不要随意的 `using namespace std;`,而应按需使用具体的 `using std::string;`
Expand All @@ -37,7 +41,7 @@ STL (Standard Template Library), 意为标准模板库, 核心包含容器, 算

## C++ string

C 对于 `string` 提供的 API 很少, 也不太好用, 因此 C++ 提供了 `std::string` 这个类, 具体的 API 可以看 https://cplusplus.com/reference/string/string/。
C 对于 `string`(实质是字符数组)提供的 API 很少, 也不太好用, 因此 C++ 提供了 `std::string` 这个类, 具体的 API 可以看 https://cplusplus.com/reference/string/string/。

常用方法的诸如:

Expand Down Expand Up @@ -115,7 +119,8 @@ std::tuple<std::string, unsigned, bool> foo() {
};
int main() {
auto result = foo();
// std::tuple<std::string, unsigned, bool> result = foo;
auto result = foo(); // 与上面被注释的代码等价
}
```

Expand Down Expand Up @@ -171,6 +176,8 @@ int main() {
还有模板类,可以自行了解。
模板的实例化是在编译期间而非运行时完成,这意味着每个实例都会对应产生一份相应的二进制代码,因此滥用模板可能会使可执行文件体积大大增加,即所谓的「二进制膨胀」。
## 运算符重载
(本实验未涉及,仅作拓展)
Expand Down

0 comments on commit 85868f1

Please sign in to comment.