STL stack

#include<iostream>
#include<stack>
using namespace std;
template<class T>
class Stack
{
	T* elements;
	int topPtr;
	int maxsize;
public:
	Stack(int size = 50);
	~Stack(){ delete[]elements; }
	void push(const T&x);
	void pop();
	T top();
	int size();
	bool empty();
};
template<class T>
Stack<T>::Stack(int size)
{
	maxsize = size;
	topPtr = -1;
	elements = new T[maxsize];
}
template<class T>
void Stack<T>::push(const T& x)
{
	if (size() == maxsize)
	{
		cout << "栈满" << endl;
		return;
	}
	else
	{
		elements[++topPtr] = x;
	}
}
template<class T>
void Stack<T>::pop()
{
	if (empty())
		cout << "栈空" << endl;
	else
		topPtr--;
}
template<class T>
T Stack<T>::top()
{
	if (empty())
		cout << "栈空" << endl;
	else
		return elements[topPtr];
}
template<class T>
int Stack<T>::size()
{
	return topPtr + 1;
}
template<class T>
bool Stack<T>::empty()
{
	if (topPtr == -1)
		return true;
	else
		return false;
}
int main()
{
	Stack<int>c;
}
原文地址:https://www.cnblogs.com/Hsiung123/p/13811927.html