template <typename T>c的使用说明
时间: 2024-02-06 15:09:45 浏览: 89
C templates
template <typename T> 是 C++ 中的模板语法,用于声明一个泛型函数或类。它的作用是使函数或类能够接受任何类型的参数,从而增加代码的复用性和灵活性。
下面是一个使用 template <typename T> 声明的泛型函数的例子:
```cpp
template <typename T>
T max(T a, T b) {
return a > b ? a : b;
}
```
在这个例子中,函数 max 接受两个参数,类型都为 T,T 是一个未知的类型。当我们调用 max 函数时,编译器会根据传入的实际参数类型来推导出 T 的具体类型,然后将该类型替换函数体中的 T,最终生成一个具体的函数。
例如,以下代码调用 max 函数时,T 的具体类型被推导为 int:
```cpp
int a = 1, b = 2;
int result = max(a, b); // result = 2
```
除了函数,我们同样可以使用 template <typename T> 声明一个泛型类。例如:
```cpp
template <typename T>
class Stack {
public:
void push(T element);
T pop();
private:
vector<T> elements;
};
```
在这个例子中,类 Stack 是一个泛型类,它可以存储任何类型的元素。在 push 和 pop 方法中,我们都使用了类型 T,这意味着 Stack 类能够存储任何类型的元素。
使用泛型函数和类时,我们需要在调用时指定具体的类型。例如:
```cpp
Stack<int> intStack;
intStack.push(1);
intStack.push(2);
intStack.pop(); // 返回 2
Stack<string> stringStack;
stringStack.push("hello");
stringStack.push("world");
stringStack.pop(); // 返回 "world"
```
在这个例子中,我们分别创建了一个存储 int 和 string 类型的 Stack 对象,并向它们中添加了元素。由于 Stack 类是泛型类,因此我们需要在创建对象时指定具体的类型。
阅读全文