
SplPriorityQueue::extract 메서드는 SplPriorityQueue에서 가장 우선순위가 높은 요소를 제거합니다. 그러나 이 메서드는 제거된 요소를 반환하지 않는다.
이유는 SplPriorityQueue는 내부적으로 요소를 힙으로 관리하기 때문입니다. 힙은 부모 노드보다 자식 노드가 더 큰(또는 더 작은) 순서로 정렬된 트리 구조입니다. SplPriorityQueue에서 요소를 제거할 때, 가장 높은 우선순위를 가진 요소인 루트 노드부터 제거합니다. 그러나 이때, SplPriorityQueue는 내부적으로 새로운 루트 노드를 찾기 위해 트리 구조를 재구성해야 합니다.
이러한 이유로, SplPriorityQueue::extract 메서드는 제거된 요소를 반환하지 않고, 대신에 SplPriorityQueue의 내부 상태를 업데이트하여 새로운 루트 노드를 찾습니다.
예를 들어, SplPriorityQueue가 [10, 20, 15, 20, 15] 인 경우, SplPriorityQueue::extract 메서드를 호출하면 가장 높은 우선순위를 가진 요소인 20이 제거되고, SplPriorityQueue의 내부 상태는 [10, 15, 15, 20]가 됩니다.
2025-04-21 15:15