参考C++ STL的stack类模板构造一个自定义的栈类模板
时间: 2024-09-12 09:02:01 浏览: 25
在C++中,标准库中的`std::stack`是一个容器适配器,它实现了基于LIFO(Last In First Out,后进先出)原则的数据结构。如果你想创建一个自定义的栈类模板,你可以参考`std::stack`的设计,并利用C++模板来实现通用性。这里是一个简单的示例:
```cpp
template <typename T>
class CustomStack {
private:
std::vector<T> elements; // 使用向量作为底层存储
public:
// 构造函数
CustomStack() {}
// 入栈操作
void push(const T& value) {
elements.push_back(value);
}
// 出栈操作
T pop() {
if (isEmpty()) throw std::runtime_error("Stack is empty");
return elements.pop_back(); // 返回并移除顶部元素
}
// 获取栈顶元素但不移除
T top() const {
if (isEmpty()) throw std::runtime_error("Stack is empty");
return elements.back();
}
// 判断栈是否为空
bool isEmpty() const {
return elements.empty();
}
// 检查栈大小
size_t size() const {
return elements.size();
}
// 清空栈
void clear() {
elements.clear();
}
};
```
这个`CustomStack`模板类支持`push`、`pop`等基本操作,同时也考虑到了一些异常处理,例如检查栈是否为空再进行操作。