# 模板大全
在编程中,模板是一种非常有用的工具,可以帮助我们编写更加灵活和可复用的代码,通过使用模板,我们可以定义一组通用的代码,这些代码可以适应不同的数据类型或参数,从而轻松地处理不同的需求。
下面是一些常用的模板类型,以及如何使用它们来编写简单易懂的代码。
1. 函数模板
函数模板是一种定义通用函数的机制,可以根据传递给函数的参数类型来选择要执行的代码,下面是一个C++函数模板的示例:
template <typename T> T add(T a, T b) { return a + b; }
这个函数模板可以接受任何类型的参数,并将其相加,在调用时,编译器会根据传递的参数类型自动推断T的类型。
int a = add(1, 2); // T is int double b = add(1.0, 2.0); // T is double
2. 类模板
类模板是一种定义通用类的机制,可以根据传递给类的参数类型来选择要执行的代码,下面是一个C++类模板的示例:
template <typename T> class MyArray { public: MyArray(T* arr, int size) : arr(arr), size(size) {} T get(int index) { return arr[index]; } private: T* arr; int size; };
这个类模板可以创建一个具有指定大小和初始值的数组,在调用时,编译器会根据传递的参数类型自动推断T的类型。
int arr[5] = {1, 2, 3, 4, 5}; MyArray<int> my_arr(arr, 5); int value = my_arr.get(2); // value is 3
3. 算法模板
算法模板是一种通用的算法实现,可以应用于不同的数据类型,算法模板通常使用STL算法库来实现,下面是一个使用C++ STL中的sort算法的示例:
std::vector<int> v = {5, 3, 1, 4, 2}; std::sort(v.begin(), v.end()); // sort the vector in ascending order
这个例子中,sort算法对一个整数向量进行排序,编译器会自动推断要排序的数据类型(在这个例子中是int),你也可以使用sort算法来排序其他类型的向量,只要它们支持