C++/STL

C++ STL 정리 - Stack

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({123}); // 1,2,3 으로 초기화한 스택 생성
 
stack<intvector<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