std::stack
std::stack (스택 컨테이너 어댑터)
LIFO(후입선출, last-in first-out) 자료구조의 기능을 제공하는 컨테이너 어댑터예요. 스택의 원소를 기본 컨테이너의 뒤(스택의 top)에서 push·pop해요.
출처: cppreference
본문
<stack> 헤더에 정의돼 있고, 컨테이너 어댑터예요.
template<
class T,
class Container = std::deque<T>
> class stack;
std::stack 클래스는 스택(LIFO 자료구조)의 기능을 제공하는 컨테이너 어댑터예요. 기본 컨테이너의 래퍼 역할을 하며 특정 함수 집합만 제공해요. 스택은 기본 컨테이너의 뒤(스택의 top)에서 원소를 push·pop해요. C++26부터 모든 멤버 함수가 constexpr이에요.
템플릿 매개변수
T: 저장된 원소 타입.T가Container::value_type과 같지 않으면 프로그램은 ill-formed예요.Container: 원소를 저장하는 기본 컨테이너 타입.SequenceContainer요구사항을 만족하고back(),push_back(),pop_back()을 일반적 의미로 제공해야 해요. 표준 컨테이너std::vector(std::vector<bool>포함),std::deque,std::list가 만족해요. 기본값은std::deque예요.
멤버 타입
container_type=Container,value_type=Container::value_type,size_type=Container::size_type,reference,const_reference.- 보호 멤버 객체
c: 기본 컨테이너.
멤버 함수
- 생성자, 소멸자,
operator=. - 원소 접근:
top. - 용량:
empty,size. - 수정자:
push,push_range(C++23),emplace(C++11),pop,swap(C++11).
비멤버 함수
operator==,!=,<,<=,>,>=,<=>(C++20): 두 stack 사전식 비교.std::swap(std::stack)(C++11):std::swap특수화.
헬퍼 클래스
std::uses_allocator<std::stack>(C++11):std::uses_allocator형질 특수화.std::formatter<std::stack>(C++23):std::stack포맷 지원.
C++17부터 추론 가이드가 있어요. stack은 후입선출 순서가 필요한 알고리즘(예: 괄호 매칭, 되돌리기 연산, 깊이 우선 탐색)에 널리 쓰여요.