Namespaces
Variants

std:: stack

From cppreference.net
헤더 파일에 정의됨 <stack>
template <

class T,
class Container = std:: deque < T >

> class stack ;

std::stack 클래스는 프로그래머에게 컨테이너 어댑터 로서 스택 의 기능, 구체적으로 LIFO(후입선출) 데이터 구조의 기능을 제공합니다.

클래스 템플릿은 기본 컨테이너에 대한 래퍼 역할을 합니다 - 특정 함수 집합만 제공됩니다. 스택은 기본 컨테이너의 뒷부분에서 요소를 푸시하고 팝하는데, 이를 스택의 top이라고 합니다.

std::stack 의 모든 멤버 함수는 constexpr 입니다: 상수 표현식 평가에서 std::stack 객체를 생성하고 사용하는 것이 가능합니다.

그러나 std::stack 객체는 일반적으로 constexpr 일 수 없습니다. 왜냐하면 동적으로 할당된 저장 공간은 동일한 상수 표현식 평가에서 해제되어야 하기 때문입니다.

(C++26부터)

목차

템플릿 매개변수

T - 저장되는 원소의 타입. T Container::value_type 와 동일한 타입이 아닌 경우 프로그램은 ill-formed입니다.
Container - 원소를 저장하는 데 사용되는 기반 컨테이너의 타입. 컨테이너는 SequenceContainer 요구 사항을 충족해야 합니다. 추가적으로 다음 함수들을 일반적인 의미론 으로 제공해야 합니다:

표준 컨테이너 std::vector ( std::vector<bool> 포함), std::deque std::list 는 이러한 요구 사항을 충족합니다. 특정 stack 클래스 인스턴스화에 대해 컨테이너 클래스가 지정되지 않은 경우, 기본적으로 표준 컨테이너 std::deque 가 사용됩니다.

멤버 타입

유형 정의
container_type Container
value_type Container::value_type
size_type Container :: size_type
reference Container::reference
const_reference Container::const_reference

멤버 객체

멤버 설명
Container c
기반 컨테이너
(보호된 멤버 객체)

멤버 함수

stack 을 생성한다
(public member function)
stack 을 소멸한다
(public member function)
컨테이너 어댑터에 값을 할당한다
(public member function)
요소 접근
최상위 요소에 접근한다
(public member function)
용량
컨테이너 어댑터가 비어 있는지 확인한다
(public member function)
요소의 개수를 반환한다
(public member function)
수정자
요소를 최상위에 삽입한다
(public member function)
(C++23)
요소들의 범위를 최상위에 삽입한다
(public member function)
(C++11)
요소를 최상위에 제자리에서 생성한다
(public member function)
최상위 요소를 제거한다
(public member function)
(C++11)
내용을 교환한다
(public member function)

비멤버 함수

stack 의 값을 사전식으로 비교합니다
(함수 템플릿)
std::swap 알고리즘을 특수화합니다
(함수 템플릿)

헬퍼 클래스

std::uses_allocator 타입 특성의 특수화
(클래스 템플릿 특수화)
std::stack 에 대한 포매팅 지원
(클래스 템플릿 특수화)

연역 가이드

(C++17부터)

참고 사항

기능 테스트 매크로 표준 기능
__cpp_lib_containers_ranges 202202L (C++23) 컨테이너를 위한 범위 기반 생성 및 삽입
__cpp_lib_constexpr_stack 202502L (C++26) constexpr std::stack

예제

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 307 C++98 Container std::vector<bool> 일 수 없었음 허용됨
LWG 2566 C++98 Container::value_type 에 대한 요구사항 누락 T Container::value_type 과 동일한 타입이 아닌 경우 형식 오류

참고 항목

크기 조정 가능한 연속 배열
(클래스 템플릿)
공간 효율적인 동적 비트셋
(클래스 템플릿 특수화)
양방향 큐
(클래스 템플릿)
이중 연결 리스트
(클래스 템플릿)