C ++

Kako se koristi redoslijed C ++

Kako se koristi redoslijed C ++

Uvod

Red čekanja je zbirka predmeta, pri čemu prva stavka dodana na popis mora biti prva stavka koja će se sljedeća ukloniti. Dakle, kako se predmeti dodaju u zbirku, ona sve više raste, tj.e. raste u duljinu. Kad god želite ukloniti bilo koju stavku, ona mora biti prva dodana. Ako se stavke kontinuirano uklanjaju, sljedeća je druga stavka; treći se uklanja nakon toga, i tako dalje.

Nakon što se ukloni prva stavka izvornog popisa, druga postaje prva stavka. Nakon uklanjanja druge stavke, treća postaje prva stavka i tako dalje.

Dobar je primjer čekanja u stvarnom životu kada se ljudi stanu u red da čekaju uslugu ili dobro. Prva osoba dobiva se prva prije posljednje. Međutim, red o kojem se govori u ovom vodiču, je softverski red, kako je dizajniran u C++.

FIFO

FIFO je kratica za First-In, First-Out. To je još jedan način uvažavanja reda. To znači da je prva stavka koja ulazi na popis prva stavka koja se uklanja, kad god se dogodi uklanjanje. Početak popisa naziva se glava ili prednja strana; kraj popisa naziva se leđa ili rep.

Osnovne operacije

Programski red mora imati najmanje sljedeće radnje:

gurnuti

Ova operacija dodaje novi element na začelju reda. Ova se operacija službeno naziva enqueue.

smjena

Ova operacija uklanja prvi element reda, a drugi element postaje novi prvi element. Ova se operacija službeno naziva dequeue. U C se zove pop++.

Ovaj članak objašnjava kako koristiti strukturu podataka reda čekanja C ++. Trebali biste znati C ++ pokazivače i reference da biste razumjeli ostatak ovog članka.

Klasa i predmeti

Klasa je skup varijabli i funkcija koje rade zajedno, gdje varijable nemaju dodijeljene vrijednosti. Kada su vrijednosti dodijeljene varijablama, klasa postaje objekt. Različite vrijednosti dane istoj klasi rezultiraju različitim objektima; odnosno različiti su objekti ista klasa s različitim vrijednostima. Stvaranje objekta iz klase kaže se kao instanciranje objekta.

Ime, red čekanja, je klasa. Objekt stvoren iz klase reda ima programer odabrano ime.

Funkcija koja pripada klasi potrebna je za instanciranje objekta iz klase. U C ++-u ta funkcija ima isto ime kao i naziv klase. Objekti stvoreni (instancirani) iz klase imaju različita imena koja im daje programer.

Stvaranje objekta iz klase znači konstrukciju objekta; to također znači instanciranje.

Program C ++ koji koristi klasu reda čekanja započinje sljedećim redovima na vrhu datoteke:

#include
#include
pomoću prostora imena std;

Prvi redak je za ulaz / izlaz. Drugi redak je omogućiti programu da koristi sve značajke klase reda. Treći redak omogućuje programu da koristi imena u standardnom prostoru imena.

Preopterećenje funkcije

Kad dva ili više različitih potpisa funkcije imaju isto ime, kaže se da je to ime preopterećeno. Kada se pozove jedna funkcija, broj i vrsta argumenata određuju koja se funkcija zapravo izvršava.

Građevinarstvo

red Ime()

Sljedeća deklaracija instancira red s imenom, que tipa int.

red que;

Red čekanja je prazan. Deklaracija započinje rezerviranom riječju, redom slijedi kutne zagrade s vrstom podataka. Tada programeru dajete ime za red.

Konstruiranje s Popisom inicijalizatora

Sljedeća definicija pokazuje kako stvoriti red s popisom inicijalizatora:

red que (1.1, 2.2, 3.3, 4.4);

Uništavanje reda

Da biste uništili red, samo ga pustite van opsega.

Pristup elementu reda

push (vrijednost)

Red čekanja je popis Prvo-prvo-izašlo. Dakle, svaka se vrijednost dodaje s leđa. Sljedeći segment koda stvara prazan red, nakon čega se sa stražnje strane dodaje pet plutajućih vrijednosti:

red que;
que.gurnuti (1.1);
que.gurnuti (2.2);
que.gurnuti (3.3);
que.gurnuti (4.4);
que.gurnuti (5.5);

veličina () const

To vraća broj elemenata u redu čekanja. Sljedeći kod ilustrira:

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

Izlaz je 5.

ispred()

To vraća referencu na prvi element reda, bez uklanjanja elementa. Izlaz sljedećeg koda je 1.1.

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

Element se ne uklanja iz reda čekanja.

prednja () const

Kada konstrukciji reda prethodi const, umjesto "front ()" izvršava se izraz "front () const". Na primjer, koristi se u sljedećem kodu.

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

Vraća se konstantna referenca. Element se ne uklanja iz vektora. Elementi reda ne mogu se mijenjati.

leđa()

Ovo vraća referencu na zadnji element reda, bez uklanjanja elementa. Izlaz sljedećeg koda je 5.5.

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

povratak () const

Kada konstrukciji reda prethodi const, umjesto "back ()" izvršava se izraz "back () const". Na primjer, koristi se u sljedećem kodu.

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

Vraća se konstantna referenca. Element se ne uklanja iz reda čekanja. S prethodnim const za izgradnju reda, elementi u redu ne mogu se mijenjati.

Kapacitet reda

veličina () const

- vidi gore

prazna () const

To vraća 1 za true ako u redu nema elemenata ili 0 za false ako je red prazan. Sljedeći kod to ilustrira:

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

Izlaz je:

0
1

Modifikatori reda

pop ()

Red čekanja je FIFO, pa svaki element koji se mora ukloniti mora biti uklonjen s vrha (glave) reda. Ova funkcija člana uklanja prvi element bez vraćanja. Sljedeći kod to ilustrira:

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

Izlaz je:

1.1
4

a.zamijeniti (b)

Dva se reda mogu zamijeniti, kao što je prikazano u ovom segmentu koda:

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

Izlaz je:

Prvi element i veličina que1: 10, 2

Prvi element i veličina que2: 1.1, 5

Imajte na umu da se duljina reda povećava ako je potrebno. Također, vrijednosti koje nisu imale zamjenu, zamjenjuju se nekim zadanim vrijednostima. Tipovi podataka moraju biti istog tipa.

Operatori jednakosti i odnosa za redove

Za obične znakove u C ++, uzlazno, brojevi dolaze ispred velikih slova, a ispred malih slova. Razmak je ispred nule i svih njih.

Operatori jednakosti

Vraća 1 za true i 0 za false.

Operator ==

Vraća 1 ako su dva reda iste veličine i ako su odgovarajući elementi jednaki; u suprotnom vraća 0. Primjer:

red que1 ("vrsta", "nešto drugo");
red que2 ("opaki");
int num = que1 == que2;
cout << num << '\n';

Izlaz je: 0.

The != Operator

- suprotno gore navedenom. Primjer:

red que1 ("vrsta", "nešto drugo");
red que2 ("opaki");
int num = que1 != que2;
cout << num << '\n';

Izlaz je: 1.

Relacijski operateri

Vraća 1 za true i 0 za false.

The < Operator

Vraća 1 ako je prvi red početni podskup drugog reda, s tim da su elementi dva jednaka dijela isti i istim redoslijedom. Ako su oba reda iste veličine ili različitih veličina i krećući se slijeva udesno, u prvom redu naiđe se na element koji je manji od odgovarajućeg elementa u drugom redu, tada će se 1 ipak vratiti. U suprotnom se vraća 0. Primjer:

red que1 ("vrsta", "nešto drugo");
red que2 ("opaki");
int num = que1 < que2;
cout << num << '\n';

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

> Operator

- suprotno gore navedenom. Primjer:

red que1 ("vrsta", "nešto drugo");
red que2 ("opaki");
int num = que1> que2;
cout << num << '\n';

Izlaz: 0

The <= Operator

- isto kao < but includes the case when the size and order are the same. Example:

red que1 ("vrsta", "nešto drugo");
red que2 ("opaki");
int num = que1 <= que2;
cout << num << '\n';

Izlaz: 1

Operator> =

- suprotno gore navedenom. Primjer:

red que1 ("vrsta", "nešto drugo");
red que2 ("opaki");
int num = que1> = que2;
cout << num << '\n';

Izlaz: 0

Klasa i njezini instancirani objekti

Vrijednost je za tip podataka, kao instancirani objekt za klasu. Konstrukcija reda također može prihvatiti klasu kao vrstu podataka. Sljedeći program to ilustrira:

#include
#include
pomoću prostora imena std;
razred TheCla

javnost:
int num;
statički char ch;
void func (char cha, const char * str)

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

statična šupljina (char ch)

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

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
red que;
que.guranje (obj1); que.guranje (obj2); que.guranje (obj3); que.guranje (obj4); que.guranje (obj5);
cout << que.size() << '\n';
return 0;

Izlaz je 5.

Povezani popis

Popis redova tehnički se naziva povezanim popisom. Postoje dvije vrste povezanih popisa za red: pojedinačno povezani popis i dvostruko povezani popis.

Jednostruko povezani element popisa može implementirati struktura od dva člana. Jedan član drži pokazivač na sljedeći element, a drugi član daje datum (jednina za podatke).

Dvostruko povezani element popisa može implementirati struktura od tri člana. Srednji član drži referentnu točku, dok prvi i treći član drže pokazivače na susjedne elemente.

Primjene u redu čekanja

Red čekanja je struktura podataka prvi u prvom. U računarstvu postoje situacije kada podaci stižu u obliku reda, što zahtijeva ponašanje prvi-prvi-prvi.

Dijeljenje računalnih resursa

Resurs u računalu je bilo koja fizička ili virtualna komponenta ograničene dostupnosti. Sadrže CPU, video karticu, tvrdi disk i memoriju. Za dijeljenje takvog resursa potreban je red.

Rukovanje prekidima

Računalna periferna oprema s vremena na vrijeme mora prekinuti računalo. Prekidima se mora rukovati na isti način na koji su stigli. Za ovo treba red.

Upravljanje informacijama.

Red se može koristiti, na primjer, za upravljanje datotekama aplikacija za posao ako su datoteke pohranjene u računalu.

Zaključak

Red čekanja je struktura podataka popisa, koja je ili pojedinačno ili dvostruko povezana lista. U pravilu je prvi element koji uđe na popis prvi element koji izađe. C ++ pruža strukturu podataka o redu čekanja u svojoj standardnoj knjižnici. Kategorije funkcija člana i operatora dostupnih za ovu strukturu su konstrukcija reda, pristup elementu reda, kapacitet reda, modifikatori reda i opetovani operateri reda.

Svaka struktura podataka o redu mora osigurati najmanje funkcije push () i pop (). push () znači, slanje novog elementa na stražnjem redu; a pop () znači uklanjanje elementa koji se nalazi na čekanju reda. Nažalost, u C ++-u ove funkcije ne vraćaju vrijednost potisnutu ili iskočenu. Dakle, da bismo znali zadnji element prije guranja, mora se koristiti dodatna funkcija back (); a da bismo znali prvi element prije iskakanja, mora se koristiti dodatna funkcija front ().

Vrijednost je za tip podataka, kao instancirani objekt za klasu. Dakle, određena klasa može se koristiti kao vrsta podataka za instanciju predloška reda. Različiti objekti za klasu postaju poput različitih vrijednosti za klasu.

Red čekanja ima aplikacije na računalu. Može se koristiti, na primjer, za upravljanje aplikacijskim datotekama za posao ako su datoteke pohranjene u računalu.

Chrys

Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...
Najbolje aplikacije za mapiranje gamepada za Linux
Ako volite igrati igre na Linuxu s gamepadom umjesto tipičnim sustavom za unos tipkovnice i miša, za vas postoji nekoliko korisnih aplikacija. Mnoge r...
Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...