더북(TheBook)

3.4.2 우선순위 큐를 위한 연산

priority_queue 동작에 필요한 연산의 범위는 상당히 제한되어 있다.

push(const T& obj): 컨테이너의 obj 복제본을 순차열의 적절한 위치에 넣는다. 원소를 넣으면 보통은 정렬 연산이 동작한다.

push(T&& obj): 컨테이너 안으로 obj를 이동해서 순차열의 적절한 위치에 넣는다. 원소를 넣으면 보통은 정렬 연산이 동작한다.

emplace(T constructor args...): emplace()에 전달된 인수로 생성자를 호출해 T 객체를 바로 생성하고 순차열의 적절한 위치에 넣는다. 우선순위 순서를 유지하기 위해 보통은 정렬 작업을 해야 한다.

top(): 우선순위 큐의 첫 번째 객체에 대한 참조를 반환한다.

pop(): 첫 번째 원소를 제거한다.

size(): 큐에 있는 객체의 개수를 반환한다.

empty(): 큐에 원소가 하나도 없으면, 즉 비어 있으면 true를 반환한다.

swap(priority_queue<T>& other): 현재 큐에 있는 원소들과 인수로 전달된 원소들을 교환한다. 인수로 전달된 큐의 원소들은 타입이 같아야 한다.

오른쪽 피연산자 객체의 원소를 왼쪽 피연산자 객체에 할당하기 위해 priority_queue에는 할당 연산자가 구현되어 있다. 그러니까 할당 연산자의 복제 버전과 이동 버전이 정의되어 있다. priority_queue 컨테이너에는 비교 연산자가 정의되어 있지 않다. 새 원소를 추가하면 우선순위 순서 유지에 필요한 정렬을 수행하느라 종종 매우 느려진다. priority_queue의 내부 동작에 대한 더 자세한 내용은 힙에서 설명하겠다.

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