English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++최고 우선순위 큐는 STL의 파생 컨테이너로, 최고 우선순위 요소만을 고려합니다. 큐는 FIFO 전략을 따르지만, 최고 우선순위 큐는 우선순위에 따라 요소를弹出합니다. 즉, 최고 우선순위 요소가 먼저弹出됩니다
일부 면에서 일반 큐와 유사하지만 다음과 같은 면에서 차이가 있습니다:
최고 우선순위 큐에서는 큐의 각 요소가 특정 우선순위와 연결되어 있지만, 우선순위는 큐 데이터 구조에 존재하지 않습니다
최고 우선순위를 가진 요소가 먼저 제거되며, 큐는 FIFO 전략을 따릅니다FIFO(先进先出)전략이란 이를 의미합니다먼저삽입된 요소가 먼저 제거됩니다.
같은 우선순위를 가진 여러 요소가 존재하면, 요소가 큐에서의 순서를 고려합니다.
priority_queue<int> variable_name;
우선순위 큐를 간단한 예제를 통해 이해해 보겠습니다.
위의 그림에서 우리는 push() 함수를 사용하여 요소를 삽입했으며, 삽입 작업은 일반 큐와 같습니다. 하지만 우리가 pop() 함수를 사용하여 요소를 큐에서 제거할 때, 우선순위가 가장 높은 요소가 먼저 제거됩니다.
함수 | 설명 |
---|---|
push() | 그것은 새로운 요소를 우선순위 큐에 삽입합니다. |
pop() | 그것은 우선순위가 가장 높은 요소를 큐에서 제거합니다. |
top() | 이 함수는 우선순위 큐의 가장 위 요소에 주소를 부여합니다. |
size() | 우선순위 큐의 크기를 반환합니다. |
empty() | 그것은 큐가 비어 있는지 확인합니다. 확인에 따라 큐의 상태를 반환합니다. |
swap() | 그것은 우선순위 큐의 요소를 같은 타입과 크기를 가진 다른 큐와 교환합니다. |
emplace() | 그것은 우선순위 큐의 가장 위에 새로운 요소를 삽입합니다. |
우선순위 큐 프로그램을 만들어 보겠습니다.
#include <iostream> #include<queue> using namespace std; int main() { priority_queue<int> p; // 변수 선언. p.push(10); // 추가 10 до очереди, top=10 p.push(30); // 추가 30 до очереди, top=30 p.push(20); // 추가 20 до очереди, top=20 cout << "가용 요소의 수 'p'까지 :" << p.size() << endl; while(!p.empty()) { std::cout << p.top() << std::endl; p.pop(); } return 0; }
위의 코드에서 우리는 우선순위 큐에 세 개의 요소를 추가했습니다.10、30、20. 이 요소들을 추가한 후에, 우리는 while 루프를 사용하여 우선순위 큐의 모든 요소를 표시합니다.
출력 결과
가용 요소의 수 'p'까지:3 30 20 10
우선순위 큐의 다른 예제를 보겠습니다.
#include <iostream> #include<queue> using namespace std; int main() { priority_queue<int> p; //우선순위 큐 선언 priority_queue<int> q; //우선순위 큐 선언 p.push(1); // 추가 '1'까지 p. p.push(2); // 추가 '2'까지 p. p.push(3); // 추가 '3'까지 p. p.push(4); // 추가 '4'까지 p. q.push(5); // 추가 '5'까지 q. q.push(6); // 추가 '6'까지 q. q.push(7); // 추가 '7'까지 q. q.push(8); // 추가 '8'까지 q. p.swap(q); std::cout << "p큐 요소는 :" << std::endl; while(!p.empty()) { std::cout << p.top() << std::endl; p.pop(); } std::cout << "q우선순위 큐 요소는 :" << std::endl; while(!q.empty()) { std::cout << q.top() << std::endl; q.pop(); } return 0; }
위의 코드에서는 두 개의 우선 큐를 선언했습니다. p 우선 큐에 네 개의 요소를 삽입했으며, q 우선 큐에도 네 개의 요소를 삽입했습니다. 요소를 삽입한 후, swap() 함수를 사용하여 p 큐의 요소를 q 큐와 교환했습니다.
출력 결과
p 우선 큐 요소는 : 8 7 6 5 q 우선 큐 요소는 : 4 3 2 1