C ++ Prioriterte køfunksjoner

C ++ Prioriterte køfunksjoner
"Køen er en FIFO (først inn, først ut) datastruktur, noe som indikerer at innsetting blir plassert på slutten og fjerning gjøres fra fronten. Et spesifikt utvalg av køer er en prioriteringskø. I motsetning til køen, følger ikke prioriteringskøen FIFO -prinsippet.

Prioritetskøer er en form for containeradapter som er spesielt utviklet slik at ifølge noen strenge svake sorteringsbetingelser, er dens opprinnelige komponent alltid den største av varene den holder. Denne rammen ligner en haug ved at komponenter kan legges til når som helst, og bare det maksimale antallet HAP -komponenter kan hentes (det første elementet i prioriteringslisten).

Prioritetskøer er konstruert som containeromformere, som er klasser som bruker en lukket forekomst av en bestemt containerkategori som deres faktiske beholder og tilbyr et bestemt sett med variabler og funksjoner for å hente komponentene sine. Den høyeste verdien av prioriteringskøen, eller "tilbake" av beholderen, er der komponentene skyves fra.”

Hva er en prioriteringskø i C++?

Den første komponenten i en prioriteringskø er den største av alle komponentene i køen, og komponentene er i synkende rekkefølge. En prioritert kø er en form for containeradapter i C ++ som bare håndterer den høyeste prioriterte komponenten.

Sammenlign en kø med en prioriteringskø

Det er ingen prioritet i en kø; I kontrast anser en købeholder varen som å ha topp prioritet. Den første-første-første-ut (FIFO) -regelen gjelder køen; I prioriteringskøen vil imidlertid komponenten med høyest prioritet bli fjernet først. Hvis flere elementer har en lignende prioritet, vil rekkefølgen på køen bli brukt i denne situasjonen.

Syntaks for prioriteringskøen

Prioritetskøen i C ++ har følgende syntaks:

Parametrene er beskrevet som følger:

  • Type: Den typen innhold eller komponenter som holdes i prioriteringskøen.
  • Container: Fordi prioriteringskøen er en containeradapter, krever utførelsen en faktisk underliggende beholder. Beholderen som skal brukes til å opprette prioriteringskøen er spesifisert av dette alternativet. Vektoren fungerer som standard beholder som standard.
  • Sammenlign: Denne parameteren er valgfri. Komponentene i prioriteringskøen er ordnet i prioriteringskøen i henhold til et objekts interne bestilling. Den beholder gjenstandenes relative posisjoner når du sammenligner dem. Funksjonsobjektets mulige verdi er desto mindre, som gir samme utfall som mindre enn operatøren.

Prioritetskøen er konstruert med en max-heap som standard i C++.

Syntaks av min-heap prioriteringskø

Opprettelsen av prioriteringskøens min-heap syntaks er som følger:

Her er større en sammenligningsklasse, og vektor er en standard malbibliotekbeholder.

Fordelene ved å bruke prioriteringskøen

Vertoffer er tildelt vekt, noe som gjør dem i stand til å stige opp i køen i stedet for å falle på baksiden, da de er i en standardkø.

Ulemper med å bruke prioriteringskøen

Fordi vi også trenger å bruke en tilleggsoperasjon for å legge til varene i henhold til deres prioritet, tar innsetting ikke lenger en fast tid, som i kø. Implementering ved hjelp av en lenket liste gjør det mulig å opprettholde en jevn innsettingstid.

Metodologier for prioriteringskø

C ++ prioriteringskøfunksjonene er som følger:

  • Tom () funksjon: Denne metoden brukes til å bestemme om beholderen som holder prioriteringskøen er tom eller ikke. Returner sann hvis det er tomt; falsk ellers. Det krever ingen argumenter.
  • Størrelse () Metode: Denne funksjonen returnerer prioriteringskøens varetall. Størrelsen gis tilbake som et heltall. Det krever ingen argumenter.
  • Push () Funksjon: Elementet legges til i køen som bruker denne tilnærmingen. Varen blir først lagt til slutten av køen, og samtidig justerer komponentene seg etter prioritet. Som i argument aksepterer den heltall.
  • POP () Funksjon: Denne teknikken fjerner den største komponenten fra prioriteringskøen. Det krever ingen argumenter.
  • TOP () Funksjon: Toppkomponenten fra prioriteringskøen returneres av denne funksjonen. Det krever ingen argumenter.
  • Swap () -funksjon: Ved å bruke denne funksjonen blir en prioritert kø av lignende størrelse og type byttet ut for komponentene med noen annen prioriteringskø. Den godtar et attributt hvis tall må byttes og prioriteringskøen.
  • Emplace () -funksjon: Med denne tilnærmingen legges et dataelement lagt til en beholder øverst i køen. Den aksepterer en attributtverdi.

La oss utføre de ovennevnte funksjonene i forskjellige koder.

Eksempel nr. 1

Vi legger til et element i en prioriteringskø i dette eksemplet. For å legge til et element i prioriteringskøen, bruker vi Push () -funksjonen.

De nødvendige overskriftsfilene og vil bli innlemmet ved start av programmet. Da blir standardnavnområdet lagt til som STD. Nå vil hovedfunksjonen () bli kalt. Køen til heltallverdiene vil bli opprettet neste. Denne køen vil være en prioriteringskø. Ulike verdier vil bli lagt til denne prioriterte køen. Tallene vil bli satt inn ved bruk av Push () -funksjonen. Tre tilfeldige verdier vil bli lagt til ved å bruke push -metoden. Uttalelsen om "cout" vil bli brukt for å skildre teksten "elementer i prioriteringskøen" på konsollen.

Etter å ha vist denne linjen for å skrive ut verdiene til køen "mens" -løkken vil bli brukt; Inne i "mens" sløyfen vil den tomme () funksjonen bli brukt for å sjekke om køen er tom eller ikke. POP () -metoden vil bli brukt til å begynne å skrive ut verdiene til køen i synkende rekkefølge. Deretter brukes også POP () -metoden på køens verdier. "Retur 0" må innarbeides på slutten.

Vi har konstruert en prioriteringskø med heltall som heter NUM. Push () -funksjonen er blitt brukt til å legge de forskjellige oppføringene i køen: 12, 30 og 72.

Eksempel nr. 2

I motsetning til vektorer og andre strukturer, kan vi ikke krysse gjennom en prioriteringskø. Av denne grunn har vi skrevet ut medlemmene i prioriteringskøen ved å bruke en stundsløyfe og forskjellige prioriterte kømetoder.

Dette er slik at prioriteringskøen vil fungere som en typisk datastruktur for prioritert kø, og det er derfor det er en STL -containeradapter med begrenset tilgang. Som et resultat trykker vi toppen før vi med jevne mellomrom spretter varen inne i en sløyfe til køen er tom.

Eksempel nr. 3

Vi bestemte oss for å eliminere varen fra prioriteringskøen i dette tilfellet. Pop () -funksjonen kan brukes til å slette en komponent fra prioriteringskøen. Maksimumsverdien elimineres i denne tilnærmingen.

Vi starter koden ved å integrere bibliotekene og standard navneområdet. Bibliotekene inneholder og . Metoden for å vise prioriteringskøen vil da bli kalt ved å bruke display_priority_queue (). Køen inneholder heltallnumrene, så "int" vil bli levert som funksjonen til funksjonen. Etter alt dette vil hovedmetoden () bli påkalt. Køen vil bli opprettet. Push () -funksjonen vil bli brukt til å legge til forskjellige verdier i den definerte prioriteringskøen. "Cout" -uttalelsen brukes til å vise de originale elementene i prioriteringskøen.

Da blir POP () -metoden brukt. Denne funksjonen eliminerer den spesifiserte verdien fra prioriteringskøen. Nå vil "cout" -uttalelsen bli brukt for å vise verdiene i køen etter å ha slettet ett element fra køen. Kommandoen “return 0” -to vil legges til. Deretter vil bruksmetoden bli brukt for å vise den definerte prioriteringskøen. "Mens" sløyfen vil bli ansatt. Innenfor "mens" sløyfen tom () og topp () metoder vil bli brukt. Sløyfetilstanden vil bli brukt på den tomme () funksjonen. POP () -metoden vil bli brukt til å slette den høyeste verdien fra prioriteringskøen.

Her har vi laget et heltall prioritert kø kalt NUM. Prioritetskøens innledende komponenter er “61, 23, 45.”Det høyeste attributtet ble deretter slettet ved hjelp av POP () -teknikken. Så utfallet vil være “45, 23.”

Eksempel nr. 4

I dette tilfellet vil topp () -funksjonen bli brukt for å hente maksimal verdi av prioriteringskøen.

Bibliotekene og standardnavnområdet vil bli integrert før vi begynner å skrive koden. og er begge tilgjengelige i bibliotekene. Vi vil da kalle Main () -funksjonen. Opprettingsmetoden for prioritert kø vil da bli påkalt. Funksjonen vil bli gitt argumentet "int" fordi køen bare inneholder heltallstall. Ulike verdier vil bli lagt til den spesifiserte prioriterte køen som bruker push () -funksjonen.

POP () vil bli brukt etter at elementene er lagt til prioriteringskøen. Denne funksjonen viste den maksimale verdien av den medfølgende prioriteringskøen. Teksten "Toppelementet i prioriteringskøen" vises ved å bruke COUT -setningen. Instruksjonen “retur 0” kan brukes for å avslutte programmet.

Eksempel nr. 5

I denne illustrasjonen sjekker vi for å se om prioriteringskøen er tom eller ikke ved å bruke den tomme () funksjonen. Denne metodikken produserer:

  • Når prioriteringskøen ikke inneholder noe element, er verdien 1 (sant)
  • Når prioriteringskøen inneholder punkt 0 (falsk).

I begynnelsen av programmet ville de nødvendige topptekstfilene bli inkludert. Da blir STD lagt til standardnavnet. Nå vil hovedmetoden () bli påkalt. Det ville være en opprettet kø ved å bruke funksjonen. Denne metoden vil ta parameteren “String” da den inneholder verdier med datatypen “String” i denne køen. Dette vil ha en prioritet. “Er køen inneholder enhver verdi?”Ville bli skrevet ut ved hjelp av“ cout ”-kommandoen.

"If-Else" -tilstanden vil bli brukt til å bestemme svaret. Den tomme () funksjonen vil bli brukt i "hvis" -uttalelsen for å sjekke om køen har noen verdier eller ikke. Hvis køen inneholder noen verdi, skriver "cout" -uttalelsen "ja", andre "cout" -uttalelse utskrifter "nei" som utgang. Som et resultat vises linjen med tittelen “Pushing the Values ​​of the Priority Cue. Prioritetskøen vil bli oppdatert for å inkludere navnene på forskjellige land. Push () -metoden vil bli brukt til å sette inn navnene. Push -teknikken vil legge til navnene på tre land. “Er køen inneholder enhver verdi?”Vil bli skrevet ut på konsollen ved hjelp av“ cout ”-kommandoen.

"If-Else" -tilstanden vil bli brukt etter visningen av denne linjen. Den tomme () metoden vil bli brukt en gang til for å bekrefte om køen er tom eller ikke. Den siste “retur 0” må være til stede.

For å sjekke om landsprioritetskøen er fylt eller ikke, benyttet vi den tomme () funksjonen. Køen er tom i begynnelsen. Land.tomt () kommer derfor tilbake. Etter det la vi elementer i køen og nok en gang benyttet den tomme () -funksjonen. Denne gangen gir det falske resultater.

Konklusjon

For det første undersøkte vi hva en prioriteringskø i C ++ er i denne artikkelen. Så kontrasterer vi den enkle køen med prioriteringskøen. I tillegg så vi på syntaks for prioriteringskøen så vel som fordeler og ulemper. Videre diskuterte vi de forskjellige C ++ -metodene for prioriterte køer. En beholder som kalles en prioriteringskø brukes til å holde komponenter med prioriteringer. I motsetning til køer, som legger til eller fjerner komponenter i henhold til FIFO -regelen, blir elementer i en prioriteringskø slettet i henhold til prioritet. Den opprinnelige komponenten fjernet fra køen vil være den som har topp prioritet. Prioritetskøens formål er å administrere komponentene i henhold til prioritet.

Fem forskjellige tilfeller er implementert i denne artikkelen. I første omgang benyttet vi Push () -funksjonen for å sette inn elementene i prioriteringskøen. Det andre eksemplet benytter seg av en "mens" -løkke for å vise verdiene til prioriteringskøen. I det tredje scenariet brukte vi POP () -metoden for å slette den maksimale verdien fra prioriteringskøen. Ved hjelp av topp () -funksjonen kunne vi hente den høyeste verdien i den fjerde illustrasjonen. I den siste benyttet vi den tomme () metoden for å avgjøre om prioriteringskøen var tom eller ikke.