[Basic C++] #64_stack
C++에서 제공하는 stack 클래스에 대해 알아보겠습니다.
Overview
- 개념
- 선언
- 멤버 함수
- 예제
#0. 개념
1. Stack
- C++에서 제공하는 stack은 LIFO 데이터 구조를 구현하는 STL 컨테이너입니다.
- stack은 기본적으로 컨테이너의 가장 뒤쪽에서만 데이터를 삽입하고 삭제합니다.
#1. 선언
1. 헤더
#include <stack>
2. 선언 및 초기화
#include <iostream>
#include <stack>
using namespace std;
int main()
{
// #0. 빈 스택 선언
stack<int> s1;
// #1. 기존 배열을 활용한 초기화
int arr[] = { 1, 2, 3, 4, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
stack<int> s2(deque<int>(arr, arr + n));
return 0;
}
#2. 멤버 함수
1. 접근
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
s.push(1);
s.push(2);
cout << s.top() << endl;
return 0;
}
Details
- stack은 Random Access가 불가능한 컨테이너입니다. 스택은 LIFO 데이터 구조를 구현하며, 가장 나중에 들어온 항목을 top() 함수를 통해 접근한 방법이 유일합니다.
2. 삽입, 제거
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
s.push(1);
s.pop();
return 0;
}
Details
- stack 컨테이너에 새로운 항목을 삽입하는 방법은 push()입니다.
- stack 컨테이너에 마지막 삽입된 항목을 제거하는 방법은 pop()입니다.
3. 그 외 함수들
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
stack<int>s2;
s.push(1);
s.push(2);
s.push(3);
s2.push(4);
s2.push(5);
s2.push(6);
// #0. size()
cout << s.size() << endl;
// #1. empty()
cout << s.empty() << endl;
//#2. swap()
s.swap(s2);
return 0;
}
Details
- size() 함수는 stack에 들어있는 항목의 개수를 반환합니다.
- empty() 함수는 stack이 비어있는지 여부를 반환합니다.
- swap() 함수는 서로 다른 두 스택 컨테이너를 바꿉니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #66_rotate, 배열 회전 (0) | 2023.04.03 |
---|---|
[Basic C++] #65_getline() (0) | 2023.04.03 |
[Basic C++] #63_string (0) | 2023.04.03 |
[Basic C++] #62_erase(), 주의할 점 (0) | 2023.04.02 |
[Basic C++] #29_Set, STL 컨테이너 (0) | 2022.11.19 |