[STL] Stack Container

Seonghun Kim·2022년 7월 18일
0

C++!

목록 보기
6/10
post-thumbnail

📌 stack container

  • LIFO (Last In First Out) 방식
    • 가장 나중에 저장된 데이터가 먼저 처리
    • 맨 끝에 있는 데이터만 접근 가능
  • container adapter
    • vector, deque, list 등의 컨테이너를 기반으로 구현
    • 기존 컨테이너들을 stack 처럼 동작할 수 있도록 멤버함수를 제한

✔ stack 사용

#include <stack>
using namespace std;
  • <stack> header
  • std::stack

✔ stack 생성

stack<[type], [container type]> [name]

[container type] default : deque<[type]>

  • stack에 저장될 타입을 명시
  • deque 컨테이너 기반으로 생성
// 비어있는 정수형 타입 stack s1를 생성
stack<int> s1;

// 기존에 있는 deque 컨테이너를 복사
deque<int> d = { 10, 20, 70 };
stack<int> s2(d);

// 기존에 있는 vector 컨테이너를 복사
vector<char> v = { 'K', 'S', 'H' };
stack<char, vector<char>> s3(v);
// 
  • 비어 있는 stack을 생성하거나 다른 sequence container에서 복사하여 생성 가능
  • 기본적으로 deque 기반으로 구현되어 있기 때문에, vector를 복사할 경우 vector 기반 생성으로 선언

✔ stack 멤버 함수

1) element access & capacity

functiondescription
s.top()마지막 원소 반환
s.size()stack s의 크기 반환
s.empty()비어있으면 true, 그렇지 않으면 false 반환

2) modifiers (수정)

functiondescription
s.push(x)원소 x를 마지막 원소 뒤에 추가
s.pop()마지막 원소 제거
stack<int> s;

for (int x = 1; x <= 5; x++)
{
    s.push(x * 10);
}

cout << "size: " << s.size();   // 5

while (!s.empty())
{
    cout << s.top() << " ";     // 50 40 30 20 10
    s.pop();
}

0개의 댓글