더북(TheBook)

vectordeque 컨테이너를 생성하고 priority_queue를 초기화에 쓸 원소로 지정할 수도 있다. 다음은 vector 컨테이너 원소들의 복제본을 초깃값 목록으로 사용해 priority_queue를 생성하는 코드다.

std::vector<int> values{21, 22, 12, 3, 24, 54, 56};
std::priority_queue<int> numbers {std::less<int>(), values};

priority_queue 생성자의 인수는 원소들의 순서를 결정하는 함수 객체와 초깃값 원소들을 제공하는 컨테이너를 사용한다. vector 원소들의 복제본은 함수 객체를 사용해 우선순위 큐에 정렬된다. values의 원소들은 원본 순서를 유지하고, 우선순위 큐의 원소들은 다음과 같은 순서가 된다.

56 54 24 22 21 12 3

우선순위 큐의 원소 저장에 사용된 컨테이너는 우선순위 큐에 대해 private으로 유지되므로 원소들을 사용하는 유일한 방법은 priority_queue 객체의 함수 멤버를 호출하는 것뿐이다.

첫 번째 생성자 인수인 함수 객체의 타입은 반드시 비교 템플릿 타입 인수로 지정되는 타입과 같아야 한다. 비교 템플릿 타입 인수의 기본값은 less<T> 객체다. 다른 유형의 함수 객체를 사용하려면 모든 템플릿 타입 인수를 지정해야 한다.

std::priority_queue<int, std::vector<int>, std::greater<int>>
                                          numbers1 {std::greater<int>(), values};

세 번째 타입 인수는 비교 객체를 위한 타입이다. 비교 객체를 지정하려면 처음 두 가지 인수, 즉 원소 타입, 기반 컨테이너 타입을 지정해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.