728x90
# Definition
: Stack 은 다음과 같이 정의되어 있다
template<
class T,
class Container = std::deque<T>
> class stack;
|
cs |
Stack 은 LIFO(Last In First Out) 의 형태를 갖는 자료구조를 의미한다.
위 정의에서 T 는 타입, Container 는 Sequence Container 중 하나가 들어가야 한다
기본 컨테이너 타입은 std::deque 이다.
여기서 stack class 는 이 자체로 컨테이너가 아니라 container adapter 이다.
# Header
#include <stack>
|
cs |
# Initialization
- 초기화
stack<int> s; // int type 의 빈 스택 생성
stack<int> s2({1, 2, 3}); // 1,2,3 으로 초기화한 스택 생성
stack<int, vector<int>> s3; // 컨테이너를 vector 로 하는 빈 스택 생성
deque<int> d1(1,2);
stack<int> s4(d1); // deque 를 복사해서 스택 생성
|
cs |
# Element Access
- top()
#include <stack>
#include <iostream>
using namespace std;
int main() {
stack<int> s;
s.push(9);
s.push(3);
s.push(55);
cout << s.top() << '\n'; // 55
return 0;
}
|
cs |
top() 은 스택의 가장 윗 원소(가장 최근 넣은 값) 을 리턴한다
# Capacity
- empty(), size()
#include <stack>
#include <iostream>
using namespace std;
int main() {
stack<int> s;
cout << s.empty() << '\n'; // true
s.push(2);
cout << s.empty() << '\n'; // false
for (int i = 0; i < 5; i++) {
s.push(i * i);
}
cout << s.size() << '\n'; // 6
return 0;
}
|
cs |
empty() 는 스택이 비었는지 확인하고 bool 값을 리턴한다
size() 는 스택안에 들어간 원소의 갯수를 리턴한다
# Modifiers
- push(), emplace(), pop(), swap()
#include <stack> #include <iostream> using namespace std; int main() { stack<int> s; s.push(1); s.push(2); while(!s.empty()) { cout << s.top() << '\n'; s.pop(); } s.emplace(9); s.emplace(3); stack<int> s2; s2.push(55); s2.push(43); s2.swap(s); while(!s.empty()) { cout << s.top() << '\n'; // 43 55 s.pop(); } while(!s2.empty()) { cout << s2.top() << '\n'; // 3 9 s2.pop(); } return 0; } | cs |
push(), emplace() 는 값 대입, pop() 은 top 에 존재하는 원소 제거, swap 은 두 스택간 전환이다.
728x90
'C++ > STL' 카테고리의 다른 글
C++ STL 정리 - 정렬 (0) | 2020.11.15 |
---|---|
C++ STL 정리 - Map (0) | 2020.09.10 |
C++ STL 정리 - Set (0) | 2020.09.07 |
C++ STL 정리 - Vector (0) | 2020.08.28 |
C++ STL 정리 - 개요 (0) | 2020.08.25 |