priority queue stl
STL의 우선 순위 대기열에 대한 심층 조사.
이 Explicit C ++ 시리즈에서는 이전 튜토리얼에서 스택과 큐를 보았습니다.
이 자습서에서는 STL의 또 다른 특수 컨테이너, 즉 우선 순위 대기열에 대해 설명합니다.
osi 모델 장치는 각 계층을 사용합니다.
우선 순위 대기열은 STL의 컨테이너 채택 자입니다. 우선 순위 큐는 첫 번째 요소가 항상 큐에서 가장 큰 요소가되도록 요소가 감소하지 않는 순서로 배열 된 컨테이너입니다.
=> 전체 C ++ 자습서 목록을 보려면 여기를 방문하십시오.
학습 내용 :
개요
FIFO 순서에 따라 요소를 푸시하고 팝하는 일반 큐와 달리 우선 순위 큐에는 요소가 감소하지 않는 순서로 있으며 각 요소에 대해 우선 순위 (고정 된 순서)가 있습니다.
우선 순위 큐는 C ++의 '최대 힙'데이터 구조와 유사한 방식으로 볼 수 있습니다.
숙련 된 PDF에 대한 SQL 인터뷰 질문 및 답변
우선 순위 대기열의 일반적인 구문은 다음과 같습니다.
priority_queue queue_name;
따라서 int 유형의 우선 순위 대기열을 정의하려면 다음과 같이 정의 할 수 있습니다.
priority_queue mypqueue;
우선 순위 대기열 – 작업
아래 우선 순위 대기열에서 지원하는 작업을 살펴 보겠습니다.
- 푸시: 우선 순위 큐에 요소를 삽입합니다. 요소를 삽입하는 동안 요소의 우선 순위가 유지됩니다.
- 팝: 우선 순위 큐에서 최상위 요소를 제거합니다.
- 상단: 우선 순위 큐의 최상위 요소, 즉 우선 순위 큐의 가장 큰 요소를 반환합니다.
- 빈: 우선 순위 큐가 비어 있는지 확인합니다.
- 크기: 우선 순위 대기열의 크기, 즉 우선 순위 대기열의 요소 수를 반환합니다.
이러한 기능 / 동작의 사용법을 보여주는 프로그램을 작성해 보겠습니다.
#include #include using namespace std; void displaypq(priority_queue pri_queue) { priority_queue pq = pri_queue; while (!pq.empty()) { cout << ' ' << pq.top(); pq.pop(); } cout << '
'; } int main () { priority_queue mypq; mypq.push(1); mypq.push(3); mypq.push(60); cout<<'
Priority queue after inserting value 60: '; displaypq(mypq); mypq.push(5); cout<<'
Priority queue after inserting value 5: '; displaypq(mypq); mypq.push(10); cout << '
The priority queue mypq is : '; displaypq(mypq); cout << '
mypq.size() : ' << mypq.size(); cout << '
mypq.top() : ' << mypq.top(); cout << '
mypq.pop() : '; mypq.pop(); displaypq(mypq); return 0; }
산출:
값 60 삽입 후 우선 순위 대기열 : 60 3 1
값 5 삽입 후 우선 순위 대기열 : 60 5 3 1
우선 순위 대기열 mypq : 60 10 5 3 1
mypq.size () : 5
mypq.top () : 60
mypq.pop () : 10 5 3 1
우선 순위 큐를 이해하려면 출력을주의 깊게 확인하십시오. 먼저 출력의 첫 번째 줄에 표시된대로 1,3,60 값을 푸시합니다. 그런 다음 우선 순위 대기열에 값 5를 푸시합니다. 그 후 우선 순위 대기열이 표시됩니다. 값 5는 60 이후에 푸시되지만 우선 순위 대기열의 맨 위는 여전히 60입니다.
다시 우리는 다른 값 10을 푸시하고 여전히 우선 순위 큐의 최상위는 60입니다. 이는 요소를 푸시하는 동안 가장 큰 요소가 항상 최상위에 있도록 요소의 순서 또는 우선 순위가 유지되기 때문입니다.
비즈니스 분석가 기술 인터뷰 질문 및 답변
결론
이것은 STL의 우선 순위 대기열 구현에 관한 것입니다. 다음 자습서에서는 map 및 set와 같은 STL 컨테이너에 대해 자세히 알아 봅니다.
=> Absolute C ++ 교육 시리즈를 보려면 여기를 클릭하십시오.