cpp模板
时间: 2023-12-27 07:04:10 浏览: 33
C++中的模板(template)是一种可以用来创建通用代码的机制,可以让我们编写一些通用的代码,使其可以适用于多种不同的数据类型。模板可以用于函数、类、成员函数、类模板等。
函数模板的定义形式如下:
```cpp
template<typename T>
T add(T a, T b) {
return a + b;
}
```
在这个示例中,我们定义了一个add函数模板,它接受两个参数,类型为T,然后返回它们的和。在函数定义前面加上`template<typename T>`表示这是一个函数模板,并且T是一个类型参数。我们可以在调用函数时指定T的类型,例如:
```cpp
int main() {
std::cout << add<int>(1, 2) << std::endl; // 输出3
std::cout << add<double>(1.0, 2.0) << std::endl; // 输出3.0
return 0;
}
```
在这个示例中,我们分别使用int和double类型来调用add函数模板,并将结果输出到屏幕上。
类模板的定义形式如下:
```cpp
template<typename T>
class Stack {
public:
void push(T value);
T pop();
bool empty() const;
private:
std::vector<T> data;
};
template<typename T>
void Stack<T>::push(T value) {
data.push_back(value);
}
template<typename T>
T Stack<T>::pop() {
T value = data.back();
data.pop_back();
return value;
}
template<typename T>
bool Stack<T>::empty() const {
return data.empty();
}
```
在这个示例中,我们定义了一个Stack类模板,它包含三个成员函数:push、pop和empty。在类定义前面加上`template<typename T>`表示这是一个类模板,并且T是一个类型参数。在类定义后面的成员函数的定义中,需要在类名和函数名之间加上`<T>`来指明这是一个模板函数。我们可以在创建类实例时指定T的类型,例如:
```cpp
int main() {
Stack<int> my_stack;
my_stack.push(10);
my_stack.push(20);
std::cout << my_stack.pop() << std::endl; // 输出20
std::cout << my_stack.pop() << std::endl; // 输出10
std::cout << my_stack.empty() << std::endl; // 输出1(true)
return 0;
}
```
在这个示例中,我们创建了一个Stack<int>实例,并向其中添加了两个元素,然后依次将它们弹出并输出到屏幕上。最后,我们检查了栈是否为空。