Make Unreal REAL.
article thumbnail
코딩 테스트를 위한 자료 구조와 알고리즘 with C++

 

 

std::priority_queue

  • STL에서 제공하는 우선순위 큐 컨테이너 어댑터이다.
  • 기본적으로 std::vector가 컨테이너로 사용된다.
  • 기본 비교자로 std::less가 사용되며, 가장 큰 수가 가장 위에서 높은 우선 순위를 갖는 최대 힙(Max Heap)을 생성한다.
    std::greater를 사용하면 가장 작은 수가 가장 높은 우선 순위를 갖는 최소 힙(Min Heap)이 생성된다.
  • 순회할 필요가 없으므로 반복자를 제공하지 않는다.
  • Root 이외의 원소는 접근할 수 없다.

 

std::priority_queue의 성능

  • 최대 힙에서 최대 원소, 최소 힙에서 최소 원소에 대한 접근은 O(1)에 수행된다.
  • 원소의 삽입은 상향식 재구성(Bottom-up Heapify)을 거치므로 O(log n)에 수행된다.
  • Root의 삭제는 하향식 재구성(Top-down Heapify)을 거치므로 O(log n)에 수행된다.
  • 생성자에 전달된 초기화 리스트에 대해서는 O(n)에 수행되는 좀 더 빠른 힙 생성 알고리즘이 사용된다.
    (각각 삽입하게 되면 O(nlog n) 시간이 걸린다.)

 

#include <iostream>
#include <queue>

using namespace std;

void main()
{
    priority_queue<int> pr_que;

    // 100, 300, 200 Push
    pr_que.emplace(100);
    pr_que.emplace(300);
    pr_que.emplace(200);

    // Pop 300
    pr_que.pop();

    cout << "Top: " << pr_que.top() << endl;

    cout << "Empty: " << boolalpha << pr_que.empty() << endl;

    cout << "크기: " << pr_que.size() << endl;
}

 

출력

Top: 200
Empty: false
크기: 2

'자료구조 & 알고리즘 > 코딩 테스트를 위한 자료 구조와 알고리즘 with C++' 카테고리의 다른 글

벤치마킹  (0) 2023.01.31
비선형 문제  (0) 2023.01.30
std::queue  (0) 2023.01.29
std::stack  (0) 2023.01.29
컨테이너 어댑터  (0) 2023.01.28
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그