더북(TheBook)

stack 컨테이너는 다양하게 응용된다. 예를 들어 에디터의 취소(undo) 기능도 스택에 변경 내용을 기록하는 방식으로 구현할 수 있다. 즉, 취소 연산은 마지막 동작을 되돌리는데, 이는 스택의 최상위에 있는 동작을 되돌리는 것이 된다. 컴파일러는 산술식을 파싱하는데 스택을 사용하고, 컴파일된 C++ 코드는 함수 호출을 스택에 기록한다. 다음은 string 객체를 저장하는 stack 컨테이너를 정의한다.

std::stack<std::string> words;

stack 컨테이너 어댑터 템플릿은 매개변수 두 개를 사용한다. 첫 번째는 저장할 객체의 타입이고, 두 번째는 기반 컨테이너의 타입이다. stack<T>의 기반 순차열 컨테이너는 deque<T> 컨테이너가 기본이며 따라서 실제 템플릿 타입은 stack<typename T, typename Container=deque<T>>가 된다.

back(), push_back(), pop_back(), empty(size() 연산만 지원한다면 어떤 컨테이너도 두 번째 템플릿 타입 인수에 기반 컨테이너로 지정할 수 있다. 다음은 list<T> 컨테이너를 사용해 stack을 정의한다.

std::stack<std::string, std::list<std::string>> fruit;
 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.