思维导图
#include <iostream>
using namespace std;
template <typename T>
class Stack
{
private:
Stack<T> data;
public:
// 判断栈是否为空
bool isEmpty() const
{
return data.empty();
}
// 获取栈的大小
size_t size() const
{
return data.size();
}
// 入栈操作
void push(const T& elem) {
data.push_back(elem);
}
// 出栈操作
void pop() {
if (isEmpty()) {
throw std::out_of_range("Stack<>::pop(): empty stack");
}
data.pop_back();
}
// 查看栈顶元素
T top() const {
if (isEmpty()) {
throw std::out_of_range("Stack<>::top(): empty stack");
}
return data.back();
}
// 清空栈
void clear() {
data.clear();
}
};