#include <iostream>
#include <list>
using namespace std;
template<class T>
class Stack
{
public:
Stack()
{
}
~Stack()
{
}
void push(T &e)
{
m_list.push_front(e);
}
void pop()
{
if (m_list.size() > 0)
{
m_list.pop_front();
}
}
T top() const
{
return m_list.front();
}
int size()
{
return m_list.size();
}
bool empty()
{
return m_list.empty();
}
void clear()
{
m_list.clear();
}
private:
list<T> m_list;
};
int main()
{
Stack<int> s;
cout << s.empty() << endl;
for (int i=0; i<10; i++)
s.push(i);
cout << s.empty() << endl;
for (int i=0; i<10; i++)
{
cout << "top: " << s.top();
s.pop();
cout << " size:" << s.size() << endl;
}
cout << s.empty() << endl;
return 0;
}