c++栈模板及使用示例
时间: 2024-10-27 22:11:41 浏览: 20
在C++中,栈是一种线性数据结构,遵循“先进后出”(LIFO,Last In First Out)原则。模板允许我们编写通用的代码,可以适用于任何数据类型。栈模板通常会使用`std::stack`容器或者自定义模板类来实现。
下面是一个简单的栈模板类的示例,它使用了C++标准库提供的模板:
```cpp
#include <iostream>
#include <stack>
// 栈模板
template <typename T>
class Stack {
public:
// 添加元素到栈顶
void push(const T& value) {
data.push(value);
}
// 删除并返回栈顶元素
T pop() {
if (data.empty()) {
throw std::runtime_error("Stack is empty");
}
return data.top();
}
// 查看栈顶元素但不删除
T top() const {
if (data.empty()) {
throw std::runtime_error("Stack is empty");
}
return data.top();
}
// 检查栈是否为空
bool empty() const {
return data.empty();
}
private:
std::stack<T> data; // 使用std::stack作为底层数据结构
};
int main() {
Stack<int> intStack;
intStack.push(5);
intStack.push(10);
std::cout << "Top element: " << intStack.top() << "\n";
intStack.pop(); // 输出5
return 0;
}
```
在这个例子中,`T`是一个类型参数,可以替换成任何类型,如`int`, `char`, `double`等。你可以创建不同类型的栈实例,比如`Stack<int>`或`Stack<std::string>`。
阅读全文