template用法
时间: 2023-08-07 12:02:55 浏览: 61
`template` 是 C++ 中的一个重要特性,用于实现泛型编程,即编写能够处理多种数据类型的通用代码。下面是几个`template`的用法:
1. 函数模板
函数模板可以用来定义通用函数,例如:
```c++
template<typename T>
T max(T a, T b) {
return a > b ? a : b;
}
```
这个函数可以比较任意两个同类型的数据,并返回较大的那个。
2. 类模板
类模板类似于函数模板,可以用来定义通用类,例如:
```c++
template<typename T>
class Stack {
public:
void push(T value);
T pop();
private:
vector<T> elems;
};
```
这个类可以定义一个通用的栈,可以存储任何类型的数据。
3. 模板特化
模板特化可以对某些特定类型进行特殊处理,例如:
```c++
template<typename T>
class MyClass {
public:
void print() {
cout << "General template" << endl;
}
};
template<>
class MyClass<int> {
public:
void print() {
cout << "Specialized template for int" << endl;
}
};
```
这个例子中,`MyClass` 是一个通用类模板,但是对于`int`类型,有一个特化版本,会执行不同的操作。
4. 模板参数
模板参数可以是类型参数或非类型参数,例如:
```c++
template<int N>
struct Factorial {
static constexpr int value = N * Factorial<N - 1>::value;
};
template<>
struct Factorial<0> {
static constexpr int value = 1;
};
```
这个例子中,`Factorial` 是一个计算阶乘的模板,其中`N` 是一个非类型参数,表示要计算的阶乘数。`Factorial` 类有一个静态成员变量`value`,用于存储计算结果。
以上就是`template`的几个常用用法,它们可以帮助我们实现通用的、可重用的代码。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)