模板大全

admin 35 0

# 模板大全

在编程中,模板是一种非常有用的工具,可以帮助我们编写更加灵活和可复用的代码,通过使用模板,我们可以定义一组通用的代码,这些代码可以适应不同的数据类型或参数,从而轻松地处理不同的需求。

下面是一些常用的模板类型,以及如何使用它们来编写简单易懂的代码。

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算法来排序其他类型的向量,只要它们支持