Sådan implementeres en prioritetskø i C ++



Denne artikel giver dig en detaljeret og omfattende viden om, hvordan du implementerer en prioritetskø i C ++ med eksempler.

En prioritetskø er en container i STL. Det ligner kø undtagen det faktum, at hvert element i prioritetskøen har en vis prioritet, og når vi poper elementer fra prioritetskøen, poppes elementerne med den højeste prioritet først. Ligesom prioritetskøen er der 10 forskellige typer containere i STL . En container er et objekt, der gemmer data. STL-containerne implementeres ved hjælp af skabelonklasser, og det er let at tilpasse dem til at indeholde forskellige typer data. I dette indlæg vil vi diskutere Priority-køen og begreber relateret til den i detaljer. Følgende markeringer vil blive dækket i denne prioritetskø i C ++ - artiklen,

Fortsætter med denne artikel om Priority Queue i C ++





hvordan man bruger scanner i java

Komponenter af STL

STL består af skabelonklasser og funktioner, der kan bruges som en standard tilgang til lagring og behandling af data. Lad os diskutere komponenterne i STL

Beholdere- Der er defineret 10 typer containere i STL, og disse er grupperet i 3 kategorier. Ud af disse 3 tilhører prioritetskøer kategorien for den afledte container. Hver beholderklasse har sit eget sæt funktioner, der kan bruges til at manipulere dataene.



Algoritme - En algoritme er en metode, der bruges til at behandle de data, der findes i containerobjektet. STL giver mange forskellige typer algoritmer, som kan bruges til initialisering, søgning, sortering, fletning, kopiering. Algoritmer implementeres ved hjælp af skabelonfunktioner.

Iterator- En iterator er et objekt, der peger mod et element i beholderen. Iteratorer kan hjælpe med at flytte gennem indholdet af en container. Iteratorer er som pegepinde, som kan øges og reduceres. Det fungerer som et link mellem algoritmen og containeren. Iteratorer bruges til at manipulere de data, der er gemt i en container.

Fortsætter med denne artikel om Priority Queue i C ++



Bunker og prioritetskø

Som vi så tidligere, tilhører Priority Queue kategorien af ​​afledte containere. Andre medlemmer af denne kategori er stak og kø. Disse afledte containere er også kendt som containeradaptere.

Stak, kø og prioritetskø er kendt som afledte containere, da de er lavet af forskellige sekvensbeholdere. Disse containere understøtter ikke nogen form for iteratorer, de bruges ikke til databehandling.

Hvad er en prioritetskø?

Med enkle ord er det en container, som vi brugte til at gemme data. Hvert element i de lagrede data tildeles en vis prioritet, som kan hjælpe os med at lagre data i en logisk rækkefølge.
Syntaks:prioritering_variabel_navn

Det er vigtigt at medtage en headerfil i programmet for at bruge en prioritetskø.

prioritetskø i c ++For eksempel, hvis vi tilføjer 2, 10, 30, 5, 6 i vores prioritetskø ved hjælp af push-funktion og derefter poper elementerne ved hjælp af pop-funktion, vil output være 30, 10, 6, 5, 2.

Okay, så nu ved vi formålet eller brugen af ​​prioritetskø. Men hvordan vidste det, om 30> 10? Gør det en slags sortering? På dette tidspunkt kommer dynger ind i billedet. For at lære mere om dynger henvises til denne artikel.

Bunker - Bunker er trælignende strukturer. Baseret på hvordan underordnede elementknudepunkter er arrangeret i en bunke i forhold til forældernoderne, er bunker opdelt i 2 dele

en. Min bunke- I Min Heap er værdien af ​​den overordnede node mindre end eller lig med værdien af ​​underordnede noder.

2. Max Heap- I Max Heap er værdien af ​​den overordnede node større end eller lig med værdien af ​​underordnede noder.

Bemærk- Prioritetskøen sorterer ikke elementerne ved hjælp af en sorteringsalgoritme i stedet for at gemme dataene i form af en bunke.

Fortsætter med denne artikel om Priority Queue i C ++

Udskrivning af alle elementerne i en prioritetskø

Efter at have forstået det grundlæggende i prioritetskøen, lad os implementere programmer til at forstå de mest almindeligt anvendte metoder med en prioritetskø

#include #include ved hjælp af navneområde std int main () {prioritet_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) mens (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Produktion:

30 15 10 9 6 2

I ovennævnte program brugte vi pop (), top () og push () funktionerne, der bruges de fleste gange, mens vi har at gøre med en prioritetskø. Lad os se på nogle af de metoder, vi kan bruge med en prioritetskø

størrelse (): Denne funktion Returnerer størrelsen på prioritetskøen

tom (): Denne funktion bruges til at kontrollere, om prioritetskøen er tom eller ikke. Det returnerer sandt, hvis prioritetskøen er tom.

skub (): Indsætter et element i prioritetskøen.

pop (): Denne funktion fjerner det øverste element i prioritetskøen, som er det element med den højeste prioritet.

bytte rundt( ): Denne funktion bytter elementerne i prioritetskøen med en anden prioritetskø. Funktionen tager en prioritetskø som parameter.

emplace (): Denne funktion bruges til at tilføje et element øverst i prioritetskøen.

Lad os se på endnu et program.

#include #include ved hjælp af navneområde std int main () {prioritet_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) mens (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Produktion:

2 6 7 9 10 15 30

Med dette kommer vi til en ende på denne prioritetskø i C ++ - artiklen. Hvis du ønsker at lære mere, skal du tjekke af Edureka, et pålideligt online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.