C ++

Hvordan bruke C ++ kø

Hvordan bruke C ++ kø

Introduksjon

En kø er en samling varer, der det første elementet som legges til i listen, må være det første elementet som skal fjernes neste. Så når ting blir lagt til i samlingen, vokser den i størrelse, dvs.e. den vokser i lengde. Når et element skal fjernes, må det være det første som legges til. Hvis gjenstander fjernes kontinuerlig, er den neste som fjernes den andre varen. den tredje fjernes etterpå, og så videre.

Etter at det første elementet i den opprinnelige listen er fjernet, blir det andre det første elementet. Etter at det andre elementet er fjernet, blir det tredje det første elementet, og så videre.

Et godt eksempel på kø i virkeligheten er når folk stiller opp for å vente på service eller godt. Den første personen blir servert først før den siste. Imidlertid er køen som er snakket om i denne opplæringen, programvarekøen, som designet i C++.

FIFO

FIFO står for First-In, First-Out. Det er en annen måte å sette pris på køen på. Dette betyr at det første elementet som kommer inn i listen, er det første elementet som skal fjernes når fjerning skal finne sted. Begynnelsen på listen kalles hodet eller fronten; slutten av listen kalles ryggen eller halen.

Viktige operasjoner

En programvarekø må ha minst følgende operasjoner:

trykk

Denne operasjonen legger til et nytt element på baksiden av køen. Denne operasjonen kalles offisielt enqueue.

skifte

Denne operasjonen fjerner det første elementet i køen, og det andre elementet blir det nye første elementet. Denne operasjonen kalles offisielt dequeue. Det kalles pop i C++.

Denne artikkelen forklarer hvordan du bruker C ++ kødatastruktur. Du bør vite C ++ pekere og referanser for å forstå resten av denne artikkelen.

Klasse og gjenstander

En klasse er et sett med variabler og funksjoner som fungerer sammen, der variablene ikke har verdier tildelt. Når verdier tildeles variablene, blir klassen et objekt. Ulike verdier gitt til samme klasse resulterer i forskjellige objekter; det vil si at forskjellige objekter er den samme klassen med forskjellige verdier. Å lage et objekt fra en klasse sies å instantere objektet.

Navnet, køen, er en klasse. Et objekt opprettet fra køklassen har et programmør valgt navn.

En funksjon som tilhører en klasse er nødvendig for å instantiere et objekt fra klassen. I C ++ har den funksjonen samme navn som navnet på klassen. Objekter som er opprettet (instantiert) fra klassen har forskjellige navn gitt av programmereren.

Å lage et objekt fra klassen betyr å konstruere objektet; det betyr også å instantiere.

Et C ++ - program som bruker køklassen, starter med følgende linjer øverst i filen:

#inkludere
#inkludere
bruker navneområde std;

Den første linjen er for inngang / utgang. Den andre linjen er å la programmet bruke alle funksjonene i køklassen. Den tredje linjen lar programmet bruke navnene i standard navneområdet.

Overbelastning av en funksjon

Når to eller flere forskjellige funksjonssignaturer har samme navn, sies det at navnet er overbelastet. Når en funksjon kalles, bestemmer antall og type argumenter hvilken funksjon som faktisk utføres.

Konstruksjon

Navn()

Følgende erklæring instantierer en kø med navnet, que av typen int.

que;

Køen er tom. Erklæringen begynner med det reserverte ordet, kø etterfulgt av vinkelparenteser med datatypen. Så har du programmereren gitt navn på køen.

Konstruksjon med initialiseringsliste

Følgende definisjon viser hvordan du oppretter en kø med initialiseringsliste:

que (1.1, 2.2, 3.3, 4.4);

Å ødelegge en kø

For å ødelegge en kø, bare la den gå utenfor omfanget.

Køelementtilgang

trykk (verdi)

En kø er en først-inn-først-ut-liste. Så hver verdi legges til fra baksiden. Følgende kodesegment oppretter en tom kø, hvoretter fem flytverdier legges til bakfra:

que;
que.trykk (1.1);
que.trykk (2.2);
que.trykk (3.3);
que.trykk (4.4);
que.trykk (5.5);

størrelse () konst

Dette returnerer antall elementer i køen. Følgende kode illustrerer:

que;
que.trykk (1.1); que.trykk (2.2); que.trykk (3.3); que.trykk (4.4); que.trykk (5.5);
cout << que.size() << '\n';

Utgangen er 5.

front()

Dette returnerer en referanse til det første elementet i køen, uten å fjerne elementet. Resultatet av følgende kode er 1.1.

que;
que.trykk (1.1); que.trykk (2.2); que.trykk (3.3); que.trykk (4.4); que.trykk (5.5);
cout << que.front() << '\n';

Elementet fjernes ikke fra køen.

front () konst

Når køkonstruksjonen er foran med const, blir uttrykket "front () const" utført i stedet for "front ()". Den brukes for eksempel i følgende kode.

const kø que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';

En konstant referanse returneres. Elementet fjernes ikke fra vektoren. Køelementene kan ikke endres.

tilbake()

Dette returnerer en referanse til det siste elementet i køen, uten å fjerne elementet. Utdataene fra følgende kode er 5.5.

que;
que.trykk (1.1); que.trykk (2.2); que.trykk (3.3); que.trykk (4.4); que.trykk (5.5);
cout << que.back() << '\n';

tilbake () konst

Når køkonstruksjonen går foran const, blir uttrykket "back () const" utført i stedet for "back ()". Den brukes for eksempel i følgende kode.

const kø que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.back() << '\n';

En konstant referanse returneres. Elementet fjernes ikke fra køen. Med den foregående konstansen for køkonstruksjonen, kan ikke elementene i køen endres.

Køkapasitet

størrelse () konst

- se ovenfor

tom () konst

Dette returnerer 1 for true hvis det ikke er noen elementer i køen, eller 0 for false hvis køen er tom. Følgende kode illustrerer dette:

que1 (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que1.empty() << '\n';
que2;
cout << que2.empty() << '\n';

Utgangen er:

0
1

Kømodifikatorer

pop ()

En kø er FIFO, så ethvert element som må fjernes må fjernes fra toppen (hodet) av køen. Denne medlemsfunksjonen fjerner det første elementet uten å returnere det. Følgende kode illustrerer dette:

que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';
que.pop ();
cout << que.size() << '\n';

Utgangen er:

1.1
4

en.bytte (b)

To køer kan byttes ut, som illustrert i dette kodesegmentet:

que1 (1.1, 2.2, 3.3, 4.4, 5.5);
que2 (10, 20);
que1.bytte (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.front() <<", "<< que2.size() << '\n';

Utgangen er:

Første element og størrelse på que1: 10, 2

Første element og størrelse på que2: 1.1, 5

Merk at lengden på køen økes om nødvendig. Verdier som ikke har erstatninger, blir også erstattet av noen standardverdier. Datatypene må være av samme type.

Likestillings- og relasjonsoperatører for køer

For vanlige tegn i C ++, i stigende rekkefølge, kommer tall før store bokstaver, som kommer før små bokstaver. Romkarakteren kommer foran null og alle sammen.

Likestillingsoperatører

Returnerer 1 for true og 0 for false.

Operatøren ==

Returnerer 1 hvis de to køene har samme størrelse og de tilsvarende elementene er like; Ellers returnerer den 0. Eksempel:

que1 ("snill", "noe annet");
que2 ("ugudelig");
int num = que1 == que2;
cout << num << '\n';

Utgangen er: 0.

De != Operatør

- motsatt av det ovennevnte. Eksempel:

que1 ("snill", "noe annet");
que2 ("ugudelig");
int num = que1 != que2;
cout << num << '\n';

Utgangen er: 1.

Relasjonsoperatører

Returnerer 1 for true og 0 for false.

De < Operator

Returnerer 1 hvis den første køen er den første delmengden av den andre køen, med elementene i de to like delene er de samme og i samme rekkefølge. Hvis begge køene er av samme størrelse eller forskjellige størrelser, og beveger seg fra venstre til høyre, oppstår det et element i den første køen som er mindre enn det tilsvarende elementet i den andre køen, så vil 1 fortsatt bli returnert. Ellers returneres 0. Eksempel:

que1 ("snill", "noe annet");
que2 ("ugudelig");
int num = que1 < que2;
cout << num << '\n';

Utgangen er 1. < does not include the case when the size and order are the same.

> Operatøren

- motsatt av det ovennevnte. Eksempel:

que1 ("snill", "noe annet");
que2 ("ugudelig");
int num = que1> que2;
cout << num << '\n';

Utgang: 0

De <= Operator

- samme som < but includes the case when the size and order are the same. Example:

que1 ("snill", "noe annet");
que2 ("ugudelig");
int num = que1 <= que2;
cout << num << '\n';

Utgang: 1

Operatøren

- motsatt av det ovennevnte. Eksempel:

que1 ("snill", "noe annet");
que2 ("ugudelig");
int num = que1> = que2;
cout << num << '\n';

Utgang: 0

Klasse og dets øyeblikkelige gjenstander

En verdi er til en datatype, som et instantiert objekt er til en klasse. Køkonstruksjonen kan også akseptere en klasse som datatype. Følgende program illustrerer dette:

#inkludere
#inkludere
bruker navneområde std;
klasse TheCla

offentlig:
int num;
statisk forkullning;
void func (char cha, const char * str)

cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';

statisk tomrom moro (char ch)

hvis (ch == 'a')
cout << "Official static member function" << '\n';

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
que;
que.skyv (obj1); que.skyv (obj2); que.skyv (obj3); que.skyv (obj4); que.skyv (obj5);
cout << que.size() << '\n';
retur 0;

Utgangen er 5.

Koblet liste

Kølisten kalles teknisk en koblet liste. Det er to typer koblede lister for køen: enkeltkoblet liste og dobbeltkoblet liste.

Et enkeltkoblet listeelement kan implementeres av en struktur på to medlemmer. Det ene medlemmet holder en peker til det neste elementet og det andre medlemmet holder datoen (entall for data).

Et dobbeltkoblet listeelement kan implementeres av en struktur på tre medlemmer. Midtmedlemmet holder referansen, mens det første og tredje medlemmet holder pekepinner til de tilstøtende elementene.

Anvendelser av køen

Køen er en først-i-først-ut-datastruktur. Det er situasjoner i databehandling når data kommer i form av en kø, noe som krever først-inn-først ut-oppførsel.

Dele dataressurser

En ressurs i en datamaskin er en hvilken som helst fysisk eller virtuell komponent med begrenset tilgjengelighet. De inkluderer CPU, skjermkort, harddisk og minne. Deling av en slik ressurs trenger kø.

Håndtering av avbrudd

Datamaskinutstyr må av og til avbryte datamaskinen. Avbruddene må håndteres på samme måte som de ankom. Dette trenger en kø.

Administrer informasjon.

Køen kan for eksempel brukes til å administrere applikasjonsfiler for en jobb, hvis filene er lagret på datamaskinen.

Konklusjon

En kø er en listedatastruktur, som enten er en enkeltkoblet liste eller en dobbeltkoblet liste. Som regel er det første elementet som kommer inn på listen det første elementet som kommer ut. C ++ gir en kødatastruktur i standardbiblioteket. Kategoriene av medlemsfunksjoner og operatører som er tilgjengelige for denne strukturen er køkonstruksjon, køelementtilgang, køkapasitet, køendringer og køoverbelastede operatører.

Enhver kødatastruktur må inneholde minst funksjonene push () og pop (). push () betyr, sender et nytt element på baksiden av køen; og pop () betyr å fjerne elementet som er foran i køen. Dessverre, i C ++, returnerer ikke disse funksjonene verdien som er dyttet eller poppet. Så for å kjenne det siste elementet før du skyver, må den ekstra back () -funksjonen brukes; og for å kjenne det første elementet før du popper, må den ekstra fronten () -funksjonen brukes.

En verdi er til en datatype, som et instantiert objekt er til en klasse. Så, en bestemt klasse kan brukes som datatype for kø-malinstansiering. Ulike objekter for klassen blir som forskjellige verdier for klassen.

Køen har applikasjoner på datamaskinen. Den kan for eksempel brukes til å administrere applikasjonsfiler for en jobb, hvis filene er lagret på datamaskinen.

Chrys

OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...
OpenTTD Tutorial
OpenTTD er et av de mest populære forretningssimuleringsspillene der ute. I dette spillet må du lage en fantastisk transportvirksomhet. Du begynner im...
SuperTuxKart for Linux
SuperTuxKart er en flott tittel designet for å gi deg Mario Kart-opplevelsen gratis på Linux-systemet ditt. Det er ganske utfordrende og morsomt å spi...