Language/C++

[C++ 스택] Stack 기본 사용법

박땅콩 2022. 7. 18.
728x90

C++의 STL에서 사용하는 Stack(스택)의 기본 사용법에 대해 알아보려고합니다.

 

목차

 

  • Stack(스택) 이란?
  • Stack(스택)의 기본 사용법 

 

 

1. Stack(스택) 이란?

 

Stack(스택)이란 한쪽 끝에서 원소를 넣거나 뺄 수 있는 자료구조입니다.

Queue(큐)와는 다르게 먼저 들어온 원소가 나중에 나가는 First In Last Out(FILO) 구조입니다.

(과자 중 프링글스 통이라고 생각하시면 될 것 같습니다.)

 

Stack(스택)의 기본 함수에는 push, pop, top, empty, size가 있습니다.

그리고 스택의 경우 제일 상단이 아닌 나머지 원소들의 확인/변경불가능합니다.

 

 

위키백과 - 스택

 

2. Stack(스택)의 기본 사용법

 

 

2-1. Stack(스택) 헤더파일

 

 

#include <stack>

std::stack<int> st;

 

스택을 사용하기 위해선 #include <stack> 헤더파일을 포함해야합니다.

기본 형식은 std::stack<자료형> 변수명; 입니다.

 

 

2-2 Stack(스택) 기본 함수

 

 

멤버 함수 결과
st.push(값) 스택의 맨앞에 원소를 추가
st.pop() 스택의 맨앞의 원소를 제거
st.empty() 스택이 비었있다면 1, 비어있지 않다면 0을 반환
st.top() 스택의 상단 원소를 반환
st.size() 스택의 사이즈를 반환

 

 

#include <stack>
#include <iostream>

using namespace std;

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);

    stack<int> st;
    st.push(5);
    st.push(4);
    st.push(3);
    if(!st.empty()) {
        cout << st.empty() << '\n'; // 0 출력, 비어있지 않음
        cout << st.top() << '\n'; // 상단 3 출력
    }

    st.pop(); // 상단 3 제거
    if(!st.empty()) {
        cout << st.size() << '\n'; // 2 출력
    }
    else {
        cout << st.size() << '\n';
    }

    st.pop(); // 상단 4 제거
    st.pop(); // 상단 5 제거

    if(!st.empty()) {
        cout << st.size() << '\n';
    }
    else {
        cout << st.size() << '\n'; // 0 출력
    }
    return 0;
}

 

 

※ Tip

 

멤버 함수를 사용시에 주의할 점이 있다.

스택이 빈 상태에서 사용하면 런타임 에러가 발생하는 멤버 함수가 있다.

멤버 함수 중 top, size, pop 이다.

그러므로 사용하기 전에 스택이 비었는지 여부를 먼저 확인 후 사용해야한다. 

728x90

'Language > C++' 카테고리의 다른 글

[C++ stable_sort] stable_sort  (0) 2022.12.15
[C++ 큐] Queue 기본 사용법  (0) 2022.07.15
[C++ 순열과 조합] next_permutation  (1) 2022.07.12
[C++ 문자열 치환] regex_replace  (0) 2022.07.11

댓글