栈
#include<iostream>
using namespace std;
//栈先进后出
//队列先进先出
template <typename T>
class stack
{
public:
stack()
:_arr(NULL)
, _size(0)
, _capacity(5)
{
/*for (int i = 0; i < _size; i++)
{
arr[i] = _arr[i];
}*/
_arr = new T[_capacity];
}
void Push(const T& x)
{
Check_Capacity();
_arr[_size]=x;
_size++;
}
void Pop()
{
if (_size == 0)
return;
_size--;
}
size_t Size() const
{
return _size;
}
bool empty() const
{
_size = 0;
}
const T& top() const
{
return _arr[0];
}
protected:
void Check_Capacity()
{
if (_size == _capacity)
{
size_t newcapacity = _capacity * 2 + 1;
T* tmp = new T[newcapacity];
for (size_t i = 0; i < _capacity; i++)
{
tmp[i] = _arr[i];
}
delete _arr;
_arr = t