文件操作

image-20250120222311475

  • 使用/创建文件的基本流程

    • 打开文件 -> 读写文件 -> 关闭文件

image-20250120222316240

函数模板

c++
1
2
3
4
5
6
7
8
9
10
11
template<class 类型参数1, class 类型参数2, ...>
返回值类型 模板名 (形参表){
函数体
}

template <class T>
void Swap(T& x, T& y) {
T tmp = x;
x = y;
y = tmp;
}
  • 编译器根据类型参数自动生成相应函数

  • 函数模板可以重载

  • C++编译器遵循以下优先顺序

    1. 先找参数完全匹配的普通函数(非由模板实例化而得的函数)
    2. 再找参数完全匹配的模板函数
    3. 再找实参经过自动类型转换后能够匹配的普通函数
    4. 上面的都找不到, 则报错

类模板

c++
1
2
3
4
template <类型参数表>
class 类模板名 {
成员函数和成员变量
};
  • 编译器由类模板生成类的过程叫类模板的实例化

    • 编译器自动用具体的数据类型替换类模板中的类型参数, 生成模板类的代码
  • 由类模板实例化得到的类叫模板类

    • 为类型参数指定的数据类型不同, 得到的模板类不同
    • 不同的模板类不兼容

image-20250120222326005

string类

常用api

输入输出

  • 输出重定向

    • freopen("test.txt", "w", stdout);
  • 输入重定向

    • freopen("t.txt", "r", sdin)