Untitled

 avatar
unknown
c_cpp
2 years ago
487 B
5
Indexable
template <typename T>
class Stack
{
public:

	Stack() :
		m_pData(0),
		m_capacity(0)
	{
	}

	~Stack()
	{
		if (m_pData)
			delete m_pData;
	}

	void Initialise(size_t capacity)
	{
		m_pData = new T[capacity];
		m_capacity = capacity;
		Size = 0;
	}

	void Push(const T &value)
	{
		if (Size < m_capacity)
			m_pData[Size++] = value;
	}

	T Pop()
	{
		return m_pData[--Size];
	}

	bool IsEmpty()
	{
		return (Size == 0);
	}

	size_t Size;

private:

	T *m_pData;
	size_t m_capacity;

};