std:: stack
|
헤더 파일에 정의됨
<stack>
|
||
|
template
<
class
T,
|
||
std::stack
클래스는 프로그래머에게
컨테이너 어댑터
로서
스택
의 기능, 구체적으로 LIFO(후입선출) 데이터 구조의 기능을 제공합니다.
클래스 템플릿은 기본 컨테이너에 대한 래퍼 역할을 합니다 - 특정 함수 집합만 제공됩니다. 스택은 기본 컨테이너의 뒷부분에서 요소를 푸시하고 팝하는데, 이를 스택의 top이라고 합니다.
std::stack
의 모든 멤버 함수는
constexpr
입니다: 상수 표현식 평가에서
std::stack
객체를 생성하고 사용하는 것이 가능합니다.
그러나
|
(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
의 값을 사전식으로 비교합니다
(함수 템플릿) |
|
|
(C++11)
|
std::swap
알고리즘을 특수화합니다
(함수 템플릿) |
헬퍼 클래스
|
(C++11)
|
std::uses_allocator
타입 특성의 특수화
(클래스 템플릿 특수화) |
|
(C++23)
|
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
과 동일한 타입이 아닌 경우 형식 오류
|
참고 항목
|
크기 조정 가능한 연속 배열
(클래스 템플릿) |
|
|
공간 효율적인 동적 비트셋
(클래스 템플릿 특수화) |
|
|
양방향 큐
(클래스 템플릿) |
|
|
이중 연결 리스트
(클래스 템플릿) |