본문 바로가기

BE/C++

[C++][STL] Stack 기본 사용법 및 예제

인트로

오늘은 C++의 STL중 하나인 Stack(스택) 기본 함수에 대해서 알아보도록 하겠습니다. 

 

목차
1. 스택(Stack)이란? 
2. 스택 헤더 파일
3. 스택 기본 함수

 

1. 스택이란?

스택(Stack)은 대표적인 LIFO(Last In First Out) 구조입니다. 따라서 제일 마지막에 넣은 데이터가 처음으로 빠져나오는 것을 볼 수 있습니다. 스택의 기본함수에는 push, pop, empty, top, swap 등이 있습니다.

 

2. 스택 헤더 파일

stack STL을 사용하기 위해서는#include <stack>  헤더파일을 포함해야 합니다 .

stack <데이터 타입> 이름 ; 으로 stack을 선언합니다.

#include <stack>
stack<int> stack;

 

3. 스택 기본 함수

▷ 스택에 데이터 추가하기

스택이름.push(데이터)  형태로 데이터를 추가합니다. 

stack.push(element)

 

스택에 데이터 삭제하기 

스택이름.pop(데이터) 형태로 스택의 top 데이터를 삭제합니다.

stack.pop()

 

▷ 스택의 제일 위(탑, top) 데이터 반환

스택이름.top() 형태로 제일 최상위 데이터를 반환합니다. 

stack.top()

 

▷ 스택의 사이즈 반환

스택이름. size() 형태로 스택의 현재 사이즈를 반환합니다. 

stack.size()

 

▷ 스택이 비어있는 지 확인 

스택이름.empty() 형태로 스택이 비어있는 지 확인합니다.

stack.empty()

 

▷ 스택 SWAP  : 두 스택의 내용 바꾸기

스택1과 스택2 두 스택의 내용을 바꾸고 싶은 경우, 내장된 swap 함수를 사용합니다. 

swap(스택1 이름, 스택2 이름) 형태로 두 스택의 내용을 바꿉니다.

swap(stack1 , stack2)

 

스택 기본 사용법 예시 

1. 스택 st 에는 1, 2, 3 데이터를  stack.push(element)함수를 사용해 삽입했습니다.

2. 스택 st2에는 10, 20,30 데이터를 stack.push(element)함수를 사용해 삽입했습니다. 

3. 스택 st와 스택 st2를 바꾸어주었습니다. 

4. 스택이 비어있을 때까지 st.top 데이터를 출력하며 pop 해주었습니다. 

#include <iostream>
#include <stack>
using namespace std;
int main(void) {

	stack<int> st;
	stack<int> st2;

	st.push(1);
	st.push(2);
	st.push(3);

	st2.push(10);
	st2.push(20);
	st2.push(30);

	swap(st, st2);

	while (!st.empty()) {
		cout << st.top() << endl;
		st.pop();
	}

	return 0;
}

 

출력결과는 다음과 같습니다.  30 20 10이 출력이 되었네요. 

st에는 1,2,3 데이터를 넣었지만,  st2와 SWAP 되어 30,20,10 데이터가 저장된 것을 볼 수 있습니다.

30
20
10

 

이상 C++ STL 중 하나인 스택 라이브러리에 대해 정리를 마치겠습니다 :D

궁금한 점은 아래 댓글로 남겨주세요. 감사합니다. 

 

map 사용법 정리 바로가기

life-with-coding.tistory.com/305

 

[C++][STL] map 사용법 정리

--- 인트로 --- 오늘은 C++의 STL중 map을 알려드리겠습니다. map은 각 노드가 key와 value 쌍으로 이루어진 트리입니다. map의 내부 구현은 검색, 삽입, 삭제가 O(logn) 인 레드블랙트리로 구성되어 있습니

life-with-coding.tistory.com