//用数组实现一个栈
#include <vector>
#include <iostream>
using namespace std;
template<typename T> class stacks
{
public:
stacks();//构造函数
~stacks();//析构函数
T getTop();//获取栈顶元素
bool pop();//删除栈顶元素
bool push(T number);//添加栈顶元素
bool empty();
int getSize();
private:
int size = 0;//栈中元素的个数
int top = -1;//栈顶指针//栈顶下标
vector<T> v;
};
//写成员函数的定义
template<typename T>
stacks<T>::stacks() {}
template<typename T>
stacks<T>::~stacks() {}
template<typename T>
bool stacks<T>::push(T number)
{
v.push_back(number);
size++;
top++;
return true;
}
template<typename T>
bool stacks<T>::pop()
{
if (empty())
{
cout << "栈为空,弹出失败" << endl;
return false;
}
v.pop_back();
size--;
top--;
return true;
}
template<typename T>
T stacks<T>::getTop()
{
return v[top];
}
template<typename T>
bool stacks<T>::empty()
{
if (size == 0)
return true;
return false;
}
template<typename T>
int stacks<T>::getSize()
{
return size;
}
int main()
{
stacks<int> s;
s.push(4);
s.push(6);
s.push(8);
int n = s.getSize();
for (int i = 0; i < n; i++)
{
cout << s.getTop() << endl;
s.pop();
}
system("pause");
return 0;
}