스택은 덱기반의 컨테이너 어뎁터이다.
먼저 들어온것이 가장 늦게나가고, 가장 늦게 들어온 것이 가장 먼저나가는 자료구조이다.
줄여서 LIFO(Last-in Fisrt-Out) stack이라고도 부른다.
이렇게 늦게 들어올수록 먼저나가서 한방향으로만 삽입/삭제를 하는 것을 알 수 가 있다.
스택은
이러한 함수들이 동작하는 컨테이너 클래스의 캡슐화 된 개체를 기본 컨테이너로 사용한다.
그리고 이런 컨테이너 어뎁터로 구현된 요소에 접근할 수 있는 특정 멤버 함수 집합을 제공한다.
표준 컨테이너 클래스는 벡터, 덱 및 리스트가 이러한 요구 사항을 충족한다. 기본적으로 특정 스택 클래스 인스턴스화에 대해 컨테이너 클래스가 지정되지 않은 경우 표준 컨테이너 덱이 사용된다.
템플릿 매개변수
template <class T, class Container = deque<T> > class stack;
멤버 타입(98기준)
typedef Container container_type; // 컨테이너 유형
typedef typename container_type::value_type value_type; // 요소의 타입
typedef typename container_type::size_type size_type; // 보통 size_t와 같음
explicit stack (const container_type& ctnr = container_type());
컨테이너 어댑터는 내부적으로 컨테이너 개체를 데이터로 유지한다. 이 컨테이너 객체는 생성자에게 전달된 ctnr
의 복사본이며, 그렇지 않으면 빈 컨테이너다.
push_back
함수를 호출한다.pop_back
함수를 호출한다.비 멤버함수
==
, !=
, <
, <=
, >
, >=