priority queue stl
Dogłębne spojrzenie na kolejkę priorytetową w STL.
W tej serii Explicit C ++ widzieliśmy stosy i kolejki w poprzednim samouczku.
W tym samouczku omówimy jeszcze jeden specjalistyczny kontener w STL, czyli kolejkę priorytetową.
jakość wywiadu analityków pytania i odpowiedzi pdf
Kolejka priorytetowa jest adapterem kontenera w STL. Kolejka priorytetowa to kontener, w którym elementy są ułożone w porządku nie malejącym, tak że pierwszy element jest zawsze największym elementem w kolejce.
=> Odwiedź tutaj, aby zapoznać się z pełną listą samouczków języka C ++.
Czego się nauczysz:
najlepsze prywatne serwery World of Warcraft
Przegląd
W przeciwieństwie do normalnej kolejki, która odkłada i wyskakuje element zgodnie z kolejnością FIFO, kolejka priorytetowa ma elementy w kolejności nie malejącej i ma priorytet (ustaloną kolejność) dla każdego elementu
Kolejkę priorytetową można przeglądać w podobny sposób, jak strukturę danych „maksymalnego sterty” w C ++.
Ogólna składnia kolejki priorytetowej jest następująca:
priority_queue queue_name;
Jeśli więc chcemy zdefiniować kolejkę priorytetową typu int, możemy zdefiniować ją następująco:
priority_queue mypqueue;
Kolejka priorytetowa - operacje
Zobaczmy poniżej operacje obsługiwane przez kolejkę priorytetową.
- Pchać: Wstawia element do kolejki priorytetowej. Podczas wstawiania elementów priorytet elementów jest zachowany.
- Muzyka pop: Usuwa najwyższy element z kolejki priorytetowej.
- Top: Zwraca najwyższy element w kolejce priorytetowej, tj. Największy element w kolejce priorytetowej.
- Pusty: Sprawdza, czy kolejka priorytetowa jest pusta.
- Rozmiar: Zwraca rozmiar kolejki priorytetowej, tj. Liczbę elementów w kolejce priorytetowej.
Napiszmy program, który zademonstruje użycie tych funkcji / operacji.
#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; }
Wynik:
Kolejka priorytetowa po wprowadzeniu wartości 60:60 3 1
Kolejka priorytetowa po wpisaniu wartości 5:60 5 3 1
jak wyświetlić plik .dat
Kolejka priorytetowa mypq to: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Proszę dokładnie sprawdzić dane wyjściowe, aby zrozumieć kolejkę priorytetową. Najpierw przekazujemy wartości 1,3,60, jak pokazano w pierwszym wierszu danych wyjściowych. Następnie przesuwamy wartość 5 w kolejce priorytetów. Następnie zostanie wyświetlona kolejka priorytetowa. Zauważ, że chociaż wartość 5 jest wypychana po 60, na szczycie kolejki priorytetów nadal jest 60.
Ponownie wciskamy kolejną wartość 10, a mimo to szczyt kolejki priorytetów to 60. Dzieje się tak, ponieważ podczas wypychania elementów kolejność lub priorytet elementów jest utrzymywany w taki sposób, że największy element zawsze znajduje się na górze.
Wniosek
Chodziło o implementację kolejki priorytetowej w STL. W następnym samouczku dowiemy się więcej o kontenerach STL, takich jak mapa i zestaw.
=> Kliknij tutaj, aby zapoznać się z serią szkoleń Absolute C ++.