BOBO's Note

Priority Queue 본문

C, C++/STL

Priority Queue

bobo_hee 2020. 5. 27. 02:48

우선순위 큐(Priority Queue)는 우선순위가 높을수록 앞쪽에 위치하는 큐이다.

 

내부적으로는 heap 자료구조를 사용하므로 전체 N개의 데이터가 존재할 때, 큐의 첫번째 요소를 얻는 데에 O(1), 삽입 및삭제는 O(logN)의 시간이 걸린다.

 

Heap

- 추가 예정 -

C++

<queue>에 정의되어 있으며 element 타입, 컨테이너 형식(vector 또는 deque), 정렬 기준(less 또는 greater)을 지정해줄 수 있다. 

 

더보기

컨테이너 적응자(container adaptor)에는 stack, queue, priority_queue가 있다. 컨테이너 적응자의 특징은 다음과 같다.

  • 순차 컨테이너보다 축소된 인터페이스를 제공한다.

  • STL 알고리즘을 직접 적용할 수 없다.

  • element 타입, 순차 컨테이너 형식을 지정할 수 있는 클래스 템플릿이다. 순차 컨테이너 형식은 vector, deque, list 중 하나로 지정할 수 있는데 이를 명시하지 않으면 default로 deque가 쓰인다.

 

다음과 같은 연산을 지원한다.

  • size(): 우선순위 큐의 크기를 반환한다.

  • empty(): 우선순위 큐가 비어있다면 true를, 그렇지 않다면 false를 반환한다.

  • top(): 우선순위 큐의 맨 앞 원소를 반환한다.

  • push(): 우선순위 큐의 맨 앞에 원소를 추가한다.

  • pop(): 우선순위 큐의 맨 앞에 있는 원소를 삭제한다.

  • emplace(): C++11부터 지원한다. 우선순위 큐의 맨 앞의 위치에 바로 생성하므로 좀 더 빠르다!

'C, C++ > STL' 카테고리의 다른 글

Associative Container  (0) 2020.06.24
Tuple  (0) 2020.05.31
Deque  (0) 2020.05.23
Comments