通过对简单栈的基本实现代码进行分析了解加深对栈的实现和功能的印象。
template <typename T> //模板类的使用
class miniStack //类的定义
{
public:
miniStack(); //定义栈
void push(const T &item); //向栈内输入数据(入栈)
void pop(); //删除栈内元素
T &top();
const T &top() const;
bool empty() const; //判空
int size() const; //栈的元素个数
private:
vector<T> stackVector; //私有变量,直接引用vector
};
template <typename T> // 模板类每一个函数前都要有的
miniStack<T>::miniStack() // 定义栈
{
}
template <typename T>
void miniStack<T>::push(const T &item)
{
stackVector.push_back(item); //向栈内输入数据,利用vector的push_back()函数直接输入
}
template <typename T>
void miniStack<T>::pop() //删除调用
{
if (empty()) //判空抛错
throw underflowError("miniStack pop(): stack empty");
stackVector.pop_back(); //调用pop_back删除最后一个
}
template <typename T>
T &miniStack<T>::top()
{
if (empty()) //判空抛错
throw underflowError("miniStack top(): stack empty");
return stackVector.back(); //vector::back的用法是输出数组里最后一个元素
}
template <typename T>
bool miniStack<T>::empty() const
{
return stackVector.size() == 0; //判断栈的大小
}
template <typename T>
int miniStack<T>::size() const //输入栈的空间大小size
{
return stackVector.size();
}