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
}