priority queue stl
Een diepgaande blik op de prioriteitswachtrij in STL.
In deze Explicit C ++ -serie hebben we stapels en wachtrijen gezien in de vorige tutorial.
In deze tutorial bespreken we nog een andere gespecialiseerde container in STL, namelijk de prioriteitswachtrij.
bewijs het c # testantwoorden
Een prioriteitswachtrij is een containeradopter in STL. Een prioriteitswachtrij is een container waarin de elementen in niet-afnemende volgorde zijn gerangschikt, zodat het eerste element altijd het grootste element in de wachtrij is.
Bezoek hier voor de volledige C ++ Tutorials-lijst.
Wat je leert:
Overzicht
In tegenstelling tot de normale wachtrij die het element pusht en laat springen volgens FIFO-volgorde, heeft prioriteitswachtrij elementen in niet-afnemende volgorde en heeft een prioriteit (vaste volgorde) voor elk element
Prioriteitswachtrij kan op dezelfde manier worden bekeken als een 'max heap' -gegevensstructuur in C ++.
De algemene syntaxis van de prioriteitswachtrij is:
goede websites om gratis anime te kijken
Dus als we een prioriteitswachtrij van het type int willen definiëren, kunnen we deze als volgt definiëren:
Prioriteitswachtrij - Bewerkingen
Laten we de bewerkingen bekijken die worden ondersteund door de onderstaande prioriteitswachtrij.
- Duwen: Voegt een element in de prioriteitswachtrij in. Bij het invoegen van elementen blijft de prioriteit van elementen behouden.
- Knal: Verwijdert het bovenste element uit de prioriteitswachtrij.
- Top: Retourneert het bovenste element in de prioriteitswachtrij, d.w.z. het grootste element in de prioriteitswachtrij.
- Leeg: Controleert of de prioriteitswachtrij leeg is.
- Grootte: Retourneert de grootte van de prioriteitswachtrij, d.w.z. het aantal elementen in de prioriteitswachtrij.
Laten we een programma schrijven om het gebruik van deze functies / bewerkingen te demonstreren.
Uitgang:
Prioriteitswachtrij na het invoegen van waarde 60: 60 3 1
Prioriteitswachtrij na het invoeren van waarde 5:60 5 3 1
De prioriteitswachtrij mypq is: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
bewijs het c # testantwoorden
Controleer de uitvoer zorgvuldig om de prioriteitswachtrij te begrijpen. Eerst pushen we waarden 1,3,60 zoals weergegeven in de eerste regel van de uitvoer. Vervolgens pushen we de waarde 5 in de prioriteitswachtrij. Daarna wordt de prioriteitswachtrij weergegeven. Merk op dat hoewel de waarde 5 wordt gepusht na 60, de top van de prioriteitswachtrij nog steeds 60 is.
We pushen weer een andere waarde 10 en toch is de top van de prioriteitswachtrij 60. Dit komt omdat tijdens het pushen van elementen de volgorde of prioriteit van de elementen zodanig wordt gehandhaafd dat het grootste element altijd bovenaan staat.
Gevolgtrekking
Dit ging allemaal over de implementatie van de prioriteitswachtrij in STL. In onze volgende tutorial zullen we meer leren over STL-containers zoals map en set.
Klik hier voor de Absolute C ++ trainingsserie.