스택은 LIFO(Last In First Out) 기술을 기반으로 작동하는 데이터 구조입니다. std::stack을 사용하면 한 쪽 끝에서만 요소를 추가 및 제거할 수 있습니다.
std::stack 클래스는 컨테이너 어댑터입니다. 컨테이너 객체는 유사한 데이터 유형의 데이터를 보유합니다. 다양한 시퀀스 컨테이너에서 스택을 생성할 수 있습니다. 컨테이너가 제공되지 않으면 기본적으로 deque 컨테이너가 사용됩니다. 컨테이너 어댑터는 반복자를 지원하지 않으므로 데이터를 조작하는 데 사용할 수 없습니다.
이 C++ 튜토리얼에서 배우게 될 것입니다.
std::stack이란 무엇입니까?
스택 구문
회원 유형
스택 작업
스택 구현
푸시() 및 팝()
빈(), 크기(), 상단()
emplace() 및 swap()
STL의 스택
스택 구문
스택을 생성하려면 코드에 헤더 파일을 포함해야 합니다. 그런 다음 이 구문을 사용하여 std::stack:
을 정의합니다.
template <class Type, class Container = deque<Type> > class stack;
유형 – std::stack에 포함된 요소의 유형입니다. 모든 유효한 C++ 유형 또는 사용자 정의 유형일 수 있습니다.
컨테이너 – 기본 컨테이너 개체의 유형입니다.
회원 유형
스택 멤버 유형은 다음과 같습니다.
value_type- 첫 번째 템플릿 매개변수 T. 요소 유형을 나타냅니다.
container_type- 두 번째 템플릿 매개변수인 Container입니다. 기본 컨테이너 유형을 나타냅니다.
size_type- 부호 없는 정수 유형.
스택 작업
C++ 스택은 다음과 같은 기본 작업을 지원합니다.
push – 항목을 스택에 추가/푸시합니다.
팝 - 스택에서 항목을 제거/팝니다.
peek – 스택의 맨 위 항목을 제거하지 않고 반환합니다.
isFull – 스택이 가득 찼는지 확인합니다.
isEmpty – 스택이 비어 있는지 확인합니다.
스택 구현
1단계) 처음에는 빈 스택이 있습니다. 빈 스택의 맨 위는 -1로 설정됩니다.
2단계) 다음으로 요소 5를 스택에 푸시했습니다. 스택의 맨 위는 요소 5를 가리킵니다.
3단계) 다음으로 요소 50을 스택에 푸시했습니다. 스택의 맨 위가 이동하고 요소 50을 가리킵니다.
4단계) 그런 다음 스택에서 맨 위 요소를 제거하는 팝 작업을 수행했습니다. 요소 50이 스택에서 팝됩니다. 스택의 맨 위는 이제 요소 5를 가리킵니다.
푸시() 및 팝()
stack::push() 함수는 스택의 맨 위에 새 항목을 추가합니다. 스택 크기는 삽입 후 1만큼 증가합니다. 함수는 다음 구문을 사용합니다.
stack.push(value)
값은 스택에 삽입할 항목입니다.
stack::pop() 함수는 스택의 맨 위 요소를 제거합니다. 이것은 스택의 최신 항목입니다. 제거 후 스택 크기가 1 감소합니다. 다음은 함수 구문입니다.
stack.pop()
이 함수는 매개변수를 사용하지 않습니다.
예시 1:
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> st;
st.push(10);
st.push(20);
st.push(30);
st.push(40);
st.pop();
st.pop();
while (!st.empty()) {
cout << ' ' << st.top();
st.pop();
}
}
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함합니다.
스택 헤더 파일을 코드에 포함하여 해당 기능을 사용하십시오.
코드에 std 네임스페이스를 포함하여 호출하지 않고 해당 클래스를 사용합니다.
main() 함수를 호출합니다. 이 함수 안에 프로그램 로직을 추가해야 합니다.
정수 값을 저장할 스택 st를 만듭니다.
push() 함수를 사용하여 값 10을 스택에 삽입합니다.
push() 함수를 사용하여 값 20을 스택에 삽입합니다.
push() 함수를 사용하여 값 30을 스택에 삽입합니다.
push() 함수를 사용하여 값 40을 스택에 삽입합니다.
pop() 함수를 사용하여 스택에서 맨 위 요소, 즉 40을 제거합니다. 이제 맨 위 요소는 30이 됩니다.
팝() 함수를 사용하여 스택에서 맨 위 요소, 즉 30을 제거합니다. 이제 맨 위 요소는 20이 됩니다.
while 루프와 empty() 함수를 사용하여 스택이 비어 있지 않은지 확인합니다. ! NOT 연산자입니다.
콘솔에 스택의 현재 내용을 인쇄합니다.
스택에서 pop() 함수를 호출합니다.
while 루프 본문의 끝입니다.
main() 함수 본문의 끝입니다.
빈(), 크기(), 상단()
스택에는 스택과 그 값을 가지고 놀 수 있는 기능이 내장되어 있습니다. 여기에는 다음이 포함됩니다.