//用数组实现一个栈
#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;
}