더북(TheBook)

3.2.1 스택 연산

stack은 다른 순차열 컨테이너와 비교하면 몇 가지 연산만 제공하는, 상대적으로 간단한 저장 메커니즘이다. 다음은 stack 컨테이너가 제공하는 전체 연산의 목록이다.

top(): 스택 상위(top)에 있는 원소에 대한 타입 T&의 참조를 반환한다. 스택이 비어 있을 때 반환되는 값은 정의되어 있지 않다.

push(const T& obj): 스택 상위에 obj의 복제본을 넣는다. 이 작업은 기반 컨테이너의 push_back() 멤버를 호출해서 완료된다.

push(T&& obj): 스택 상위에 obj를 이동해서 넣는다. 이 작업은 기반 컨테이너의 우측값 참조 매개변수 버전의 push_back() 멤버를 호출해서 수행된다.

pop(): 스택 상위에 원소를 삭제한다.

size(): 스택에 있는 원소의 개수를 반환한다.

empty(): 스택이 원소가 하나도 없으면, 즉 비어 있으면 true를 반환한다.

emplace():emplace()에 전달된 인수로 T 생성자를 호출해 컨테이너 내부에 객체를 바로 생성하고 stack<T> 상위에 객체를 추가한다.

swap(stack<T> &other_stack): 현재 스택에 있는 원소들과 인수로 전달된 원소들을 교환한다. 인수는 현재 스택과 같은 타입으로 된 원소들을 담고 있어야 한다. stack 객체에 대해 같은 일을 하는 전역 함수 템플릿 swap() 같은 특수화도 있다.

stack<T> 템플릿에는 operator=()의 복제 버전과 이동 버전이 모두 정의되어 있으니 stack 객체를 다른 객체에 할당할 수 있다. stack 객체끼리 비교할 수 있는 연산자도 모두 정의되어 있다. 비교 연산자는 기반 컨테이너에서 대응하는 원소를 사전 순서에 맞춰 비교하면서 실행된다. 사전 순서(lexicographical) 비교는 사전에서 단어들을 정렬할 때 사용하는 비교 방식이다. 한 원소가 다른 원소와 일치하지 않을 때까지 대응하는 원소를 비교한다. 처음으로 일치하지 않는 원소가 나온 결과가 사전 순서 비교의 결과가 된다. 한 스택이 다른 스택보다 더 많은 원소를 담고 있고, 일치하는 원소 쌍이 같다면 더 많은 원소를 가진 스택이 더 큰 스택이 된다.

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