C ++

Kako uporabljati čakalno vrsto C ++

Kako uporabljati čakalno vrsto C ++

Uvod

Čakalna vrsta je zbirka elementov, pri čemer mora biti prvi element, dodan na seznam, prvi element, ki ga je treba odstraniti naslednji. Ko se zbirki dodajajo predmeti, se ta povečuje, tj.e. raste v dolžino. Kadar koli želite odstraniti kateri koli element, ga je treba dodati prvega. Če se predmeti odstranjujejo neprekinjeno, je naslednji odstranjeni drugi element; tretji se nato odstrani itd.

Po odstranitvi prvega elementa prvotnega seznama drugi postane prvi element. Po odstranitvi drugega elementa tretji postane prvi element itd.

Dober primer čakalne vrste iz resničnega življenja je, ko se ljudje postavijo v vrsto, da čakajo na storitev ali dobro. Prva oseba prejme prvo pred zadnjo. Vendar je vrsta, o kateri je govora v tej vadnici, vrsta programske opreme, kot je zasnovana v C++.

FIFO

FIFO pomeni First-In, First-Out. To je še en način ocenjevanja čakalne vrste. To pomeni, da je prvi element na seznamu prvi element, ki ga je treba odstraniti, kadar koli naj bi se odstranil. Začetek seznama se imenuje glava ali spredaj; konec seznama se imenuje hrbet ali rep.

Bistvene operacije

Čakalna vrsta programske opreme mora imeti vsaj naslednje postopke:

potisnite

Ta operacija doda nov element na zadnji strani čakalne vrste. Ta operacija se uradno imenuje čakalna vrsta.

premik

Ta operacija odstrani prvi element čakalne vrste, drugi element pa postane novi prvi element. Ta operacija se uradno imenuje odprava. V C se imenuje pop++.

V tem članku je razloženo, kako uporabljati strukturo podatkov čakalne vrste C ++. Morali bi poznati kazalnike in sklice na C ++, da bi razumeli preostanek tega članka.

Razred in predmeti

Razred je nabor spremenljivk in funkcij, ki delujejo skupaj, pri čemer spremenljivkam niso dodeljene vrednosti. Ko so spremenljivkam dodeljene vrednosti, razred postane objekt. Različne vrednosti, dane istemu razredu, povzročajo različne predmete; to pomeni, da so različni predmeti isti razred z različnimi vrednostmi. Ustvarjanje predmeta iz razreda naj bi ustvarilo primerek predmeta.

Ime, vrsta, je razred. Predmet, ustvarjen iz razreda čakalne vrste, ima izbrano ime programerja.

Funkcija, ki pripada razredu, je potrebna za primerek predmeta iz razreda. V C ++ ima ta funkcija enako ime kot ime razreda. Predmeti, ustvarjeni (primerki) iz razreda, imajo različna imena, ki jih jim da programer.

Ustvarjanje predmeta iz razreda pomeni konstruiranje predmeta; pomeni tudi instanciranje.

Program C ++, ki uporablja razred čakalne vrste, se začne z naslednjimi vrsticami na vrhu datoteke:

#include
#include
uporaba imenskega prostora std;

Prva vrstica je namenjena vhodu / izhodu. Druga vrstica je omogočiti programu uporabo vseh funkcij razreda čakalne vrste. Tretja vrstica programu omogoča uporabo imen v standardnem imenskem prostoru.

Preobremenitev funkcije

Če imata dva ali več različnih podpisov funkcij isto ime, naj bi bilo to ime preobremenjeno. Ko pokličete eno funkcijo, število in vrsta argumentov določite, katera funkcija se dejansko izvaja.

Gradnja

čakalna vrsta ime ()

Naslednja deklaracija ustvari vrsto z imenom, que tipa int.

čakalna vrsta que;

Čakalna vrsta je prazna. Izjava se začne z rezervirano besedo, čakalni vrsti, ki ji sledijo kotni oklepaji s podatkovnim tipom. Potem imate programerju določeno ime za čakalno vrsto.

Konstruiranje s seznamom inicializatorja

Naslednja definicija prikazuje, kako ustvariti čakalno vrsto s seznamom inicializatorja:

čakalna vrsta que (1.1, 2.2, 3.3, 4.4);

Uničevanje čakalne vrste

Če želite uničiti čakalno vrsto, jo preprosto izpustite.

Dostop do elementa čakalne vrste

potisni (vrednost)

Čakalna vrsta je seznam Prvi v prvem. Torej, vsaka vrednost se doda od zadaj. Naslednji kodni segment ustvari prazno čakalno vrsto, po kateri se od zadaj doda pet plavajočih vrednosti:

čakalna vrsta que;
que.potisnite (1.1);
que.potisnite (2.2);
que.potisnite (3.3);
que.potisnite (4.4);
que.potisnite (5.5);

velikost () const

To vrne število elementov v čakalni vrsti. Naslednja koda prikazuje:

čakalna vrsta que;
que.potisnite (1.1); que.potisnite (2.2); que.potisnite (3.3); que.potisnite (4.4); que.potisnite (5.5);
cout << que.size() << '\n';

Izhod je 5.

spredaj ()

To vrne sklic na prvi element čakalne vrste, ne da bi ga odstranili. Rezultat naslednje kode je 1.1.

čakalna vrsta que;
que.potisnite (1.1); que.potisnite (2.2); que.potisnite (3.3); que.potisnite (4.4); que.potisnite (5.5);
cout << que.front() << '\n';

Element ni odstranjen iz čakalne vrste.

spredaj () const

Ko je pred čakalno vrsto pred const, se namesto „front ()“ izvede izraz “front () const”. Uporablja se na primer v naslednji kodi.

const čakalna vrsta que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';

Vrne se stalna referenca. Element ni odstranjen iz vektorja. Elementov čakalne vrste ni mogoče spremeniti.

nazaj ()

To vrne sklic na zadnji element čakalne vrste, ne da bi ga odstranili. Rezultat naslednje kode je 5.5.

čakalna vrsta que;
que.potisnite (1.1); que.potisnite (2.2); que.potisnite (3.3); que.potisnite (4.4); que.potisnite (5.5);
cout << que.back() << '\n';

back () const

Ko je pred čakalno vrsto pred const, se namesto „back ()“ izvede izraz “back () const”. Uporablja se na primer v naslednji kodi.

const čakalna vrsta que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.back() << '\n';

Vrne se stalna referenca. Element ni odstranjen iz čakalne vrste. S predhodno const za konstrukcijo čakalne vrste elementov v čakalni vrsti ni mogoče spremeniti.

Kapaciteta čakalne vrste

velikost () const

- glej zgoraj

prazno () const

To vrne 1 za true, če v čakalni vrsti ni elementov, ali 0 za false, če je vrsta prazna. Naslednja koda to ponazarja:

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

Rezultat je:

0
1

Modifikatorji čakalne vrste

pop ()

Čakalna vrsta je FIFO, zato je treba vse elemente, ki jih je treba odstraniti, odstraniti z vrha (glave) čakalne vrste. Ta funkcija člana odstrani prvi element, ne da bi ga vrnila. Naslednja koda to ponazarja:

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

Rezultat je:

1.1
4

a.zamenjava (b)

Kot je prikazano v tem segmentu kode, je mogoče zamenjati dve vrsti:

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

Rezultat je:

Prvi element in velikost que1: 10, 2

Prvi element in velikost que2: 1.1, 5

Upoštevajte, da se dolžina čakalne vrste po potrebi poveča. Vrednosti, ki niso imele zamenjav, se nadomestijo s privzetimi vrednostmi. Tipi podatkov morajo biti iste vrste.

Operaterji enakosti in relacije za čakalne vrste

Za navadne znake v jeziku C ++ so v naraščajočem vrstnem redu številke pred velikimi črkami, ki so pred malimi črkami. Vesoljski znak je pred ničlo in pred vsemi.

Izvajalci enakosti

Vrne 1 za true in 0 za false.

Operater ==

Vrne 1, če imata obe vrsti enake velikosti in sta ustrezna elementa enaka; v nasprotnem primeru vrne 0. Primer:

čakalna vrsta que1 ("vrsta", "nekaj drugega");
čakalna vrsta que2 ("hudoben");
int num = que1 == que2;
cout << num << '\n';

Izhod je: 0.

The != Operater

- nasprotno zgoraj. Primer:

čakalna vrsta que1 ("vrsta", "nekaj drugega");
čakalna vrsta que2 ("hudoben");
int num = que1 != que2;
cout << num << '\n';

Rezultat je: 1.

Relacijski operaterji

Vrne 1 za true in 0 za false.

The < Operator

Vrne 1, če je prva vrsta začetna podmnožica druge čakalne vrste, pri čemer so elementi obeh enakih delov enaki in v istem vrstnem redu. Če sta obe čakalni vrsti enake velikosti ali različni velikosti in se premikata od leve proti desni, v prvi čakalni vrsti naletimo na element, ki je manjši od ustreznega elementa v drugi čakalni vrsti, bo 1 še vedno vrnjen. V nasprotnem primeru se vrne 0. Primer:

čakalna vrsta que1 ("vrsta", "nekaj drugega");
čakalna vrsta que2 ("hudoben");
int num = que1 < que2;
cout << num << '\n';

Izhod je 1. < does not include the case when the size and order are the same.

> Operater

- nasprotno zgoraj. Primer:

čakalna vrsta que1 ("vrsta", "nekaj drugega");
čakalna vrsta que2 ("hudoben");
int num = que1> que2;
cout << num << '\n';

Izhod: 0

The <= Operator

- enako kot < but includes the case when the size and order are the same. Example:

čakalna vrsta que1 ("vrsta", "nekaj drugega");
čakalna vrsta que2 ("hudoben");
int num = que1 <= que2;
cout << num << '\n';

Izhod: 1

Operater> =

- nasprotno zgoraj. Primer:

čakalna vrsta que1 ("vrsta", "nekaj drugega");
čakalna vrsta que2 ("hudoben");
int num = que1> = que2;
cout << num << '\n';

Izhod: 0

Razred in njegovi hitri predmeti

Vrednost je za podatkovni tip, kot instancirani objekt za razred. Konstrukcija čakalne vrste lahko sprejme tudi razred kot podatkovni tip. Naslednji program to ponazarja:

#include
#include
uporaba imenskega prostora std;
razred TheCla

javno:
int številka;
statični znak;
void func (char cha, const char * str)

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

statična praznina (char ch)

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

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
čakalna vrsta que;
que.potisnite (obj1); que.potisni (obj2); que.potisni (obj3); que.potisk (obj4); que.potisk (obj5);
cout << que.size() << '\n';
vrnitev 0;

Izhod je 5.

Povezani seznam

Seznam čakalnih vrst se tehnično imenuje povezani seznam. Za čakalno vrsto obstajata dve vrsti povezanih seznamov: posamezno povezan seznam in dvojno povezan seznam.

Enotno povezan element seznama lahko izvede struktura dveh članov. En član drži kazalec na naslednji element, drugi član pa referenčno točko (ednina za podatke).

Dvojno povezan element seznama lahko izvede struktura treh članov. Srednji član ima referenčno točko, medtem ko prvi in ​​tretji član držita kazalce na sosednje elemente.

Aplikacije v čakalni vrsti

Čakalna vrsta je struktura podatkov prvi v prvem. V računalništvu obstajajo situacije, ko podatki prispejo v obliki čakalne vrste, kar zahteva vedenje prvi v prvem.

Skupna raba računalniških virov

Vir v računalniku je katera koli fizična ali navidezna komponenta z omejeno razpoložljivostjo. Vključujejo CPU, grafično kartico, trdi disk in pomnilnik. Skupna raba takega vira potrebuje čakalno vrsto.

Ravnanje s prekinitvami

Računalniške zunanje naprave morajo občasno prekiniti računalnik. S prekinitvami je treba ravnati na enak način, kot so prispeli. To potrebuje čakalno vrsto.

Upravljanje informacij.

Čakalno vrsto lahko na primer uporabite za upravljanje datotek aplikacije za opravilo, če so datoteke shranjene v računalniku.

Zaključek

Čakalna vrsta je struktura podatkov seznama, ki je bodisi posamezno povezan seznam bodisi dvojno povezan seznam. Praviloma je prvi element, ki vstopi na seznam, prvi element, ki izide. C ++ zagotavlja strukturo podatkov čakalne vrste v svoji standardni knjižnici. Kategorije funkcij članov in operaterjev, ki so na voljo za to strukturo, so konstrukcija čakalne vrste, dostop do elementov čakalne vrste, zmogljivost čakalne vrste, modifikatorji čakalne vrste in preobremenjeni operaterji.

Vsaka struktura podatkov o čakalni vrsti mora zagotavljati vsaj funkciji člana push () in pop (). push () pomeni pošiljanje novega elementa na zadnji strani čakalne vrste; in pop () pomeni odstranjevanje elementa na sprednji strani čakalne vrste. Na žalost te funkcije v C ++ ne vrnejo potisnjene ali izpuščene vrednosti. Torej, če želite poznati zadnji element pred potiskanjem, je treba uporabiti funkcijo extra back (); in če želite poznati prvi element pred pojavljanjem, je treba uporabiti dodatno funkcijo front ().

Vrednost je za podatkovni tip, kot instancirani objekt za razred. Torej lahko določen razred uporabimo kot podatkovni tip za instanco predloge čakalne vrste. Različni predmeti za razred postanejo kot različne vrednosti za razred.

V čakalni vrsti so aplikacije v računalniku. Uporablja se lahko na primer za upravljanje aplikacijskih datotek za delo, če so datoteke shranjene v računalniku.

Chrys

10 najboljših iger za igranje v Ubuntuju
Platforma Windows je bila ena izmed prevladujočih platform za igre na srečo zaradi velikega odstotka iger, ki se danes razvijajo za naravno podporo si...
5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...
Bitka za Wesnoth 1.13.6 Razvoj izdan
Bitka za Wesnoth 1.13.6, ki je izšel prejšnji mesec, je šesta razvojna izdaja v 1.13.x series in prinaša številne izboljšave, predvsem uporabniški vme...