priority_queue

2025. 1. 6. 13:11·내배캠/C++
우선 순위 큐 priority_queue는 queue와 비슷하지만, 각 요소가 우선순위를 가지며 우선순위가 높은 요소가 먼저 처리되는 자료구조이다. 일반적인 FIFO(First Int First Out) 구조의 queue와는 다르게, 요소의 우선순위에 따라 정렬된 순서로 처리된다.
삽입/삭제는 항상 o(long n) 이고, top() 가장 높은 우선순위 원소 조회는 o(1) 이다.
그래서 가장 큰/작은 원소를 순식간에 추출해야하는 문제에 최적이다.

 

특징

1. 정렬된 상태 유지:

  • 삽입되는 모든 요소는 우선 순위에 따라 자동으로 정렬된다.
  • 높은 우선순위의 요소는 큐의 앞쪽에 위치한다.

2. 빠른 접근:

  • 우선순위를 통해 최대 값 혹은 최소 값을 빠르게 가져올 수 있다.

3. Heap 기반 구현:

  • 보통 Max-Heap 혹은 Min-Heap으로 구현된다.
  • 삽입 및 삭제 연산은 O(log n)의 시작 복잡도를 가진다.

 

#include <queue>

// Max-Heap 선언
// 기본적으로 Max-Heap으로 동작한다.
// 우선순위 큐는 내부적으로 백터를 이용해서 생략을 해도 되지만, 
// 세 번째 인자를 넣기 위해선 명시적으로 써주어야한다.
priority_queue<int> == priority_queue<int, vector<int>, less<int>> MaxHeap;

// Min-Heap 선언
priority_queue<int, vector<int>, greater<int>> MinHeap;

// 커스텀 우선 순위
struct Node
{
	int Num;
    char Name;
    bool operator<(const Node& Other) const
    {
    	if(Num < Other.Num) return 1;
        if(Num > Other.Num) return 0;
        
        return Name < Other.Name;
}

priority_queue<Node> CustomPQ;

 

 

 

'내배캠 > C++' 카테고리의 다른 글

Linked List 클래스로 구현  (0) 2025.01.07
유클리드 거리 공식  (0) 2025.01.06
std::vector를 class로 구현  (2) 2024.12.31
std::regex_replace  (0) 2024.12.31
디자인 패턴(Observer Pattern)  (2) 2024.12.30
'내배캠/C++' 카테고리의 다른 글
  • Linked List 클래스로 구현
  • 유클리드 거리 공식
  • std::vector를 class로 구현
  • std::regex_replace
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    priority_queue
    상단으로

    티스토리툴바