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부터 지원한다. 우선순위 큐의 맨 앞의 위치에 바로 생성하므로 좀 더 빠르다!