CS/C++

[Mastering C++ Programming] - Priority Queue

sliver__ 2022. 12. 5. 22:05
728x90
  • 우선순위 큐는 기존 컨테이너를 래핑하고 우선순위 대기열 작업에 필요한 높은 수준의 기능을 제공하는 동시에 우선순위 대기열과 관련 없는 불필요한 기능을 숨기는 템플릿화된 어댑터 클래스이다. 
  • 우선 순위 대기열은 기본적으로 벡터 컨테이너를 사용합니다. 
  • 그러나 deque 컨테이너도 우선 순위 큐의 요구 사항을 충족합니다. 
  • 따라서 우선순위 대기열 인스턴스화 중에 우선순위 큐에 deque도 사용하도록 지시할 수 있습니다.
  • 우선 순위 큐는 가장 높은 우선 순위 값이 먼저 표시되는 방식으로 데이터를 구성합니다. 
  • 즉, 값이 내림차순으로 정렬됩니다.
  • deque 와 vector는 우선 순위 큐 어댑터의 요구 사항을 충족합니다.

 

  • API는 아래와 같다.

 

  • 예제 코드는 아래와 같다.
#include <iostream>
#include <queue>
#include <iterator>
#include <algorithm>
using namespace std;

int main () {
  priority_queue<int> q;

  q.push( 100 );
  q.push( 50 );
  q.push( 1000 );
  q.push( 800 );
  q.push( 300 );

  cout << "\nSequence in which value are inserted are ..." << endl;
  cout << "100\t50\t1000\t800\t300" << endl;
  cout << "Priority queue values are ..." << endl;

  while ( ! q.empty() ) {
    cout << q.top() << "\t";
    q.pop();
  }
  cout << endl;

  return 0;
}

 

  • 결과는 내림차순으로 출력된다.
./a.out

Sequence in which value are inserted are ...
100	50	1000	800	300
Priority queue values are ...
1000	800	300	100	50
728x90