Hvordan implementere en prioritetskø i C ++



Denne artikkelen vil gi deg detaljert og omfattende kunnskap om hvordan du implementerer en prioritetskø i C ++ med eksempler.

En prioritert kø er en container i STL. Det ligner på kø, bortsett fra det faktum at hvert element i prioritetskøen har viss prioritet, og når vi spretter elementer fra prioritetskøen, poppes elementene med høyest prioritet først. I likhet med prioritetskøen er det 10 forskjellige typer containere i STL . En container er et objekt som lagrer data. STL-containere er implementert ved hjelp av malklasser, og det er enkelt å tilpasse den til å holde forskjellige typer data. I dette innlegget vil vi diskutere Priority-køen og konseptene knyttet til den i detalj. Følgende tips vil bli dekket i denne Priority Queue in C ++ - artikkelen,

Fortsetter med denne artikkelen om Priority Queue i C ++





Komponenter av STL

STL består av malklasser og funksjoner som kan brukes som en standard tilnærming for lagring og behandling av data. La oss diskutere komponentene i STL

Beholdere- Det er 10 typer containere definert i STL, og disse er gruppert i 3 kategorier. Av disse 3 tilhører prioritetskøer kategorien til den avledede containeren. Hver containerklasse har sitt eget sett med funksjoner som kan brukes til å manipulere dataene.



Algoritme - En algoritme er en metode som brukes til å behandle dataene som er tilstede i containerobjektet. STL gir mange forskjellige typer algoritmer som kan brukes til initialisering, søk, sortering, sammenslåing, kopiering. Algoritmer implementeres ved hjelp av malfunksjoner.

Iterator- En iterator er et objekt som peker mot et element i beholderen. Iteratorer kan hjelpe til med å flytte gjennom innholdet i en container. Iteratorer er som pekere som kan økes og reduseres. Det fungerer som en kobling mellom algoritmen og beholderen. Iteratorer brukes til å manipulere dataene som er lagret i en container.

java hvordan avslutte programmet

Fortsetter med denne artikkelen om Priority Queue i C ++



Massevis og prioritetskø

Som vi så tidligere, tilhører Priority Queue kategorien avledede containere. Andre medlemmer i denne kategorien er stack og kø. Disse avledede containere er også kjent som containeradaptere.

Stack, kø og prioritetskø er kjent som avledede containere, ettersom de er laget av forskjellige sekvensbeholdere. Disse beholderne støtter ikke noen type iteratorer, de brukes ikke til datamanipulering.

Hva er egentlig en prioritert kø?

Med enkle ord er det en container som vi brukte til å lagre data. Hvert element i de lagrede dataene tildeles en viss prioritet som kan hjelpe oss med å lagre data i en logisk rekkefølge.
Syntaks:prioritets_variabel_navn

Det er viktig å inkludere en headerfil i programmet for å kunne bruke en prioritetskø.

prioritetskø i c ++For eksempel, hvis vi legger til 2, 10, 30, 5, 6 i vår prioritetskø ved hjelp av trykkfunksjon og deretter spretter elementene ved hjelp av popfunksjon, vil utgangen være 30, 10, 6, 5, 2.

Ok, så nå vet vi formålet eller bruken av prioritetskø. Men hvordan visste det om 30> 10? Gjør det en slags sortering? På dette tidspunktet kommer dynger inn i bildet. For å lære om hauger i detalj, se denne artikkelen.

Hauger - Hauger er trelignende strukturer. Basert på hvordan underordnede noder er ordnet i en haug i forhold til foreldrenodene, er hauger delt inn i 2 deler

en. Min haug- I Min Heap er verdien til foreldrenoden mindre enn eller lik verdien av underordnede noder.

2. Max Heap- I Max Heap er verdien til foreldrenoden større enn eller lik verdien av underordnede noder.

Merk- Prioritetskøen sorterer ikke elementene ved hjelp av noen sorteringsalgoritmer, i stedet lagret den dataene i form av en bunke.

Fortsetter med denne artikkelen om Priority Queue i C ++

Skriver ut alle elementene i en prioritetskø

Etter å ha forstått det grunnleggende i prioritetskøen, la oss implementere programmer for å forstå de mest brukte metodene med en prioritetskø

#include #include ved å bruke navneområdet std int main () {prioritet_kjøp 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 }

Produksjon:

hva er en skanner i java

30 15 10 9 6 2

I det ovennevnte programmet brukte vi pop (), top () og push () funksjonene som brukes mest av gangene mens vi har med en prioritetskø. La oss ta en titt på noen av metodene vi kan bruke med en prioritetskø

størrelse (): Denne funksjonen Returnerer størrelsen på Priority Queue

tom (): Denne funksjonen brukes til å sjekke om prioritetskøen er tom eller ikke. Det returnerer sant når prioritetskøen er tom.

trykk (): Setter inn et element i Priority Queue.

pop (): Denne funksjonen fjerner toppelementet i prioritetskøen som er elementet med høyest prioritet.

bytte( ): Denne funksjonen bytter elementene i prioritetskøen med en annen prioritetskø. Funksjonen tar en prioritetskø som parameter.

emplace (): Denne funksjonen brukes til å legge til et element øverst i prioritetskøen.

La oss se på ett program til.

#include #include ved å bruke navneområdet std int main () {prioritet_kjøp 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 }

Produksjon:

2 6 7 9 10 15 30

Med dette kommer vi til en slutt på denne Priority Queue in C ++ - artikkelen. Hvis du ønsker å lære mer, sjekk ut av Edureka, et pålitelig online læringsfirma. Edurekas Java J2EE- og SOA-opplærings- og sertifiseringskurs er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet på denne bloggen, så kommer vi tilbake til deg så snart som mulig.