본문 바로가기

프로그래밍 언어 (プログラミング言語)/C && C++

C++ - Stack(STL)

목차
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

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