상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 std::priority_queue의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`std::priority_queue`는 C++ STL(Standard Template Library)에서 제공하는 컨테이너 어댑터로, <a href='https://sangseek.com/sangseeks/우선순위 큐/ko'>우선순위 큐</a>를 구현하는 데 사용됩니다. 우선순위 큐는 각 요소가 우선순위를 가지며, 가장 높은 우선순위를 가진 요소가 가장 먼저 제거되는 <a href='https://sangseek.com/sangseeks/자료구조/ko'>자료구조</a>입니다. `std::priority_queue`는 기본적으로 최대 힙(max heap)으로 구현되어 있으며, 가장 큰 요소가 큐의 맨 위에 위치합니다. 기본 사용법 `std::priority_queue`를 사용하기 위해서는 `<queue>` 헤더 파일을 포함해야 합니다. ```cpp include <queue> include <vector> include <iostream> ``` 기본 생성 `std::priority_queue`는 기본적으로 `<a href='https://sangseek.com/sangseeks/std::vector/ko'>std::vector</a>`를 내부 컨테이너로 사용합니다. 기본적인 생성자는 다음과 같습니다. ```cpp std::priority_queue<int> pq; // int 타입의 최대 힙 ``` 요소 추가 `std::priority_queue`에 요소를 추가하려면 `push()` 메서드를 사용합니다. ```cpp pq.push(10); pq.push(20); pq.push(15); ``` 요소 제거 가장 높은 우선순위를 가진 요소를 제거하려면 `pop()` 메서드를 사용합니다. 이 메서드는 큐에서 가장 큰 요소를 제거하지만, 반환하지는 않습니다. ```cpp pq.pop(); // 20이 제거됨 ``` 가장 높은 우선순위 요소 접근 가장 높은 우선순위를 가진 요소를 확인하려면 `top()` 메서드를 사용합니다. 이 메서드는 큐에서 가장 큰 요소를 반환하지만, 제거하지는 않습니다. ```cpp std::cout << pq.top() << std::endl; // 15가 출력됨 ``` 크기 확인 현재 큐에 있는 요소의 개수를 확인하려면 `size()` 메서드를 사용합니다. ```cpp std::cout << pq.size() << std::endl; // 현재 큐의 크기 출력 ``` <a href='https://sangseek.com/sangseeks/비어있는/ko'>비어있는</a>지 확인 큐가 비어있는지 확인하려면 `empty()` 메서드를 사용합니다. ```cpp if (pq.empty()) { std::cout << "큐가 비어 있습니다." << std::endl; } ``` 사용자 정의 비교 함수 기본적으로 `std::priority_queue`는 최대 힙을 사용하지만, 최소 힙(min heap)을 만들고 싶다면 사용자 정의 비교 함수를 제공할 수 있습니다. 예를 들어, `std::greater`를 사용하여 최소 힙을 만들 수 있습니다. ```cpp std::priority_queue<int, std::vector<int>, std::greater<int>> minHeap; minHeap.push(10); minHeap.push(20); minHeap.push(15); std::cout << minHeap.top() << std::endl; // 10이 출력됨 ``` 예제 코드 아래는 `std::priority_queue`의 기본적인 사용법을 보여주는 예제 코드입니다. ```cpp include <iostream> include <queue> include <vector> int main() { // 최대 힙 std::priority_queue<int> maxHeap; maxHeap.push(30); maxHeap.push(10); maxHeap.push(20); std::cout << "최대 힙의 요소들: "; while (!maxHeap.empty()) { std::cout << maxHeap.top() << " "; // 30, 20, 10 출력 maxHeap.pop(); } std::cout << std::endl; // 최소 힙 std::priority_queue<int, std::vector<int>, std::greater<int>> minHeap; minHeap.push(30); minHeap.push(10); minHeap.push(20); std::cout << "최소 힙의 요소들: "; while (!minHeap.empty()) { std::cout << minHeap.top() << " "; // 10, 20, 30 출력 minHeap.pop(); } std::cout << std::endl; return 0; } ``` 결론 `std::priority_queue`는 우선순위 큐를 쉽게 구현할 수 있는 강력한 도구입니다. 기본적으로 최대 힙을 사용하지만, 사용자 정의 비교 함수를 통해 최소 힙을 구현할 수도 있습니다. 다양한 상황에서 우선순위에 따라 데이터를 처리해야 할 때 유용하게 사용할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기