C++/STL

[C++] STL #3 Stack & Queue

노랑꼬리 2023. 6. 19. 11:56

목차

※ STL #1 순차 컨테이너

※ STL #2 연관 컨테이너

 

1. stack

2. queue


1. std::stack

- LIFO (Last In First Out : 후입선출) 데이터 구조

ㄴ 마지막에 삽입된 데이터가 가장 먼저 삭제된다.

(사용처 예시 : ctrl + z, DFS(깊이 우선 탐색) )

- deque를 바탕으로 만들어져 있다.

스택 작동 방식

 

 

가. 선언 및 초기화

template<typename T>    //template  자유 자료형

std::stack<T>        //T : 배열에 담길 자료형

 

- stack<int> s1;                             // 빈 스택 생성

- stack<char> s2( {'a', 'b', 'c'} )      // 생성과 동시에 초기화

- stack<char> s3(s2);                       // s2의 값을 복사하여 s3 스택 생성

 

 

나. 멤버 함수           (※ 기준 : stack<int> s( {'1', '2', '3'}; )

Element access(요소 접근)
s.top() 최상위 요소를 반환한다. (예시 기준 3)
Capacity(용량)  
s.empty() 스택이 비어있는지 확인하고 bool 값 반환
s.size() 스택의 크기를 반환한다.
Modifiers(수식어)
s.push(num) 맨 위에 num을 삽입한다.
s.emplace(num) 맨 위에 num을 삽입한다.
s.pop() 최상위 요소를 제거한다.
s.swap(s2) s s2의 인자를 교환한다.

 

2. std::queue

- FIFO (First In First Out : 선입선출) 데이터 구조

ㄴ 먼저 삽입된 데이터가 먼저 삭제된다.

(사용처 예시 : 컴퓨터 버퍼, BFS(넓이 우선 탐색) )

 

가. 선언 및 초기화

template<typename T>

std::queue<T

 

- queue<int> q1;                             // 빈 스택 생성

- queue<char> q2( {'a', 'b', 'c'} )      // 생성과 동시에 초기화

- queue<char> q3(q2);                       // q2의 값을 복사하여 q3 스택 생성

 

나. 멤버함수           (※ 기준 : queue<int> q( {1,2,3}; )

Element access(요소 접근)
q.front() 첫 번째 요소 반환 (예시 기준 1)
q.back() 마지막 요소 반환 (예시 기준 3)
Capacity(용량)  
q.empty() 큐가 비어있는지 확인하고 bool 값 반환
q.size() 큐의 크기를 반환한다.
Modifiers(수식어)
q.push(num) 끝에 num을 삽입한다.
q.emplace(num) 끝에 num을 삽입한다.
q.pop() 첫번째 요소를 제거한다.
q.swap(q2) q q2의 인자를 교환한다.

 

※ 참조

c++ reference : https://en.cppreference.com/