//实现一个栈
//用数组
#include <iostream>
#include <vector>
using namespace std;

template<typename type> class stack1
{
private:
	vector<type> v;//数组实现栈
	int size = 0;//栈的大小
	int top = -1;
public:
	stack1();
	~stack1();
	bool empty();
	type gettop();
	void push(type t);
	bool pop();
	int getsize();
};

template<typename type> 
stack1<type>::stack1(){}

template<typename type>
stack1<type>::~stack1(){}

template<typename type>
type stack1<type>::gettop()
{
	return v[top];
}

template<typename type>
void stack1<type>::push(type t)
{
	v.push_back(t);
	size++;
	top++;
}

template<typename type>
bool stack1<type>::pop()
{
	if (empty())
	{
		cout << "栈为空" << endl;
		return false;
	}
	v.pop_back();
	size--;
	top--;
	return true;
}

template <typename type>
bool stack1<type>::empty()
{
	if (size == 0)
		return true;
	return false;
}

template<typename type>
int stack1<type>::getsize()
{
	return size;
}


int main()
{
	stack1<int> s;
	s.push(3);
	s.push(4);
	s.push(5);
	int n = s.getsize();
	for (int i = 0; i < n; i++)
	{
		int result = s.gettop();
		s.pop();
		cout << result << " ";
	}

	system("pause");
	return 0;
}