priority_queue_priority_queue

priority_queue_priority_queue (std::priority_queue::priority_queue — 생성자)

std::priority_queue 객체를 만드는 생성자들이에요. 기본 생성자부터 비교자, 내부 컨테이너, 이터레이터 범위, 할당자, 복사·이동까지 다양한 방식으로 초기화할 수 있어요.

출처: cppreference

본문

주요 시그니처는 다음과 같아요.

priority_queue() : priority_queue(Compare(), Container()) {}   // (1) (since C++11)
explicit priority_queue( const Compare& compare );             // (2) (since C++11)
priority_queue( const Compare& compare, const Container& cont );   // (3)
priority_queue( const Compare& compare, Container&& cont );    // (4) (since C++11)
priority_queue( const priority_queue& other );                 // (5)
priority_queue( priority_queue&& other );                      // (6) (since C++11)
template< class InputIt >
priority_queue( InputIt first, InputIt last,
                const Compare& compare = Compare() );          // (7) (since C++11)
template< class InputIt >
priority_queue( InputIt first, InputIt last,
                const Compare& compare, const Container& cont );   // (8) (since C++11)
template< class Alloc >
explicit priority_queue( const Alloc& alloc );                 // (9) (since C++11)

여러 오버로드가 있는데, 핵심은 다음과 같아요.

  • (1) 기본 생성자: 비교자와 내부 컨테이너를 기본값으로 만들어요.
  • (2) 비교자만 받는 생성자.
  • (3)(4) 비교자 + 내부 컨테이너(복사/이동)를 받는 생성자. 컨테이너가 주어지면 힙으로 만듭니다(std::make_heap).
  • (7)(8) 이터레이터 범위의 원소들로 만드는 생성자. 역시 힙으로 만듭니다.
  • (9 이후) 할당자 관련 생성자들.

내부 컨테이너의 원소들은 생성 시 힙(heap) 구조로 재배열돼요.

예제

#include <iostream>
#include <queue>
int main()
{
    std::priority_queue<int> pq;   // 기본 생성 (최대 힙)
    pq.push(3); pq.push(1); pq.push(2);
    std::cout << pq.top() << '\n';   // 3
}

더 알아보기 (Learn more)

cppreference