// Stack (LIFO Last-In-First-Out 후입선출)
template<typename T, typename Container=vector<T>>
class Stack
{
public:
void push(const T& value)
{
_container.push_back(value);
}
void pop()
{
_container.pop_back();
}
T& top()
{
return _container.back();
}
bool empty() { return _container.empty(); }
int size() { return _container.size(); }
private:
//vector<T> _container;
//list<T> _container;
Container _container;
};
cpp의 std 자료구조들은 인테페이스가 대부분 통일된 형태로 구현되어 있다.
따라서 Stack의 원소를 저장하는 자료구조가 List든 vector든 같은 명령어로 호출이 가능하다.
실제 stack도 초기화 시 stack에 사용될 stl 자료구조를 template으로 받아 사용한다.