[STL] 우선순위 큐를 사용한 최대 힙&최소 힙

윤정민·2023년 1월 6일
0

C++

목록 보기
5/46

1. 우선순위 큐(priority_queue)

  • 우선순위에 따라 queue를 정렬

1) 선언
priority_queue<자료형, Container, 비교함수> 변수명
priority_queue<자료형> 변수명
2) 추가
pq.push(element)
3) 삭제
pq.pop()
4) 맨앞 원소 반환
int a = pq.top()
5) empty 확인
if(pq.empty())
6) 크기 확인
int qpSize = size()

2. 최대 힙

  • C++에서는 priority_queue가 디폴트로 내림차순 비교를 수행

    • 따라서 따로 구현할 부분이 없음
  • 간단한 구현

    priority_queue<int> pq;
        pq.push(5);
        pq.push(3);
        pq.push(1);
        pq.push(2);
        pq.push(4);
    
        while (!pq.empty())
        {
            cout << pq.top() <<" ";
            pq.pop();
        }
  • 결과






3. 최소 힙

  • compare 함수를 greater<>로 설정
  • 간단한 구현
	priority_queue<int,vector<int>,greater<>> pq;
	pq.push(5);
	pq.push(3);
	pq.push(1);
	pq.push(2);
	pq.push(4);

	while (!pq.empty())
	{
		cout << pq.top() <<" ";
		pq.pop();
	}
  • 결과

profile
그냥 하자

0개의 댓글