C ++

Kā izmantot C ++ Queue

Kā izmantot C ++ Queue

Ievads

Rinda ir vienumu kolekcija, kur pirmajam sarakstā pievienotajam vienumam jābūt pirmajam, kas jānoņem pēc tam. Tātad, kad kolekcijai tiek pievienoti priekšmeti, tā izmērs pieaug, t.i.e. tā garums pieaug. Ikreiz, kad kāds vienums ir jānoņem, tam jābūt pirmajam. Ja vienumi tiek noņemti nepārtraukti, tad nākamais tiek noņemts, tas ir otrais vienums; trešais pēc tam tiek noņemts utt.

Pēc sākotnējā saraksta pirmā vienuma noņemšanas otrais kļūst par pirmo vienumu. Pēc otrā vienuma noņemšanas trešais kļūst par pirmo vienumu utt.

Labs rindas piemērs reālajā dzīvē ir tas, kad cilvēki rindā gaida pakalpojumu vai labu. Pirmā persona tiek apkalpota vispirms pirms pēdējās. Tomēr rinda, par kuru runāja šajā apmācībā, ir programmatūras rinda, kā paredzēts C++.

FIFO

FIFO nozīmē First-In, First-Out. Tas ir vēl viens veids, kā novērtēt rindu. Tas nozīmē, ka pirmais vienums, kas iekļuvis sarakstā, ir pirmais vienums, kas jānoņem, kad vien jānotiek. Saraksta sākumu sauc par galvu vai priekšpusi; saraksta beigas sauc par muguru vai asti.

Būtiskās operācijas

Programmatūras rindā ir jāveic vismaz šādas darbības:

grūst

Šī darbība rindas aizmugurē pievieno jaunu elementu. Šo operāciju oficiāli sauc par enqueue.

maiņa

Šī darbība noņem rindas pirmo elementu, un otrais elements kļūst par jauno pirmo elementu. Šo operāciju oficiāli sauc par dequeue. To sauc par popu C++.

Šajā rakstā ir paskaidrots, kā izmantot C ++ rindas datu struktūru. Jums vajadzētu zināt C ++ norādes un atsauces, lai izprastu pārējo šī raksta daļu.

Klase un objekti

Klase ir mainīgo un funkciju kopums, kas darbojas kopā, kur mainīgajiem nav piešķirtu vērtību. Kad mainīgajiem tiek piešķirtas vērtības, klase kļūst par objektu. Dažādas vērtības, kas piešķirtas tai pašai klasei, rada dažādus objektus; tas ir, dažādi objekti ir viena klase ar atšķirīgām vērtībām. Tiek teikts, ka objekta izveide no klases ir objekta tūlītēja aktivizēšana.

Nosaukums, rinda, ir klase. No rindas klases izveidotajam objektam ir izvēlēts programmētāja vārds.

Funkcija, kas pieder klasei, ir vajadzīga, lai no klases izveidotu objektu. Programmā C ++ šai funkcijai ir tāds pats nosaukums kā klases nosaukumam. Objektiem, kas izveidoti (eksemplāri) no klases, tos piešķir dažādi programmētāja nosaukumi.

Objekta izveide no klases nozīmē objekta konstruēšanu; tas nozīmē arī momentāno.

C ++ programma, kas izmanto rindas klasi, faila augšdaļā sākas ar šādām rindām:

# iekļaut
# iekļaut
izmantojot nosaukumvietu std;

Pirmā rinda ir paredzēta ievadei / izvadei. Otrā rinda ir atļaut programmai izmantot visas rindas klases funkcijas. Trešā rinda ļauj programmai izmantot nosaukumus standarta nosaukumvietā.

Funkcijas pārslodze

Ja diviem vai vairākiem dažādu funkciju parakstiem ir vienāds nosaukums, tiek uzskatīts, ka šis nosaukums ir pārslogots. Izsaucot vienu funkciju, argumentu skaits un veids nosaka, kura funkcija tiek faktiski izpildīta.

Celtniecība

rinda nosaukums ()

Šī deklarācija momentāno rindu ar nosaukumu, rinda tipa int.

rinda rinda;

Rinda ir tukša. Deklarācija sākas ar rezervēto vārdu, rindu, kam seko leņķa iekavas ar datu tipu. Tad jums ir programmētāja vārds rindai.

Konstrukcija ar inicializētāju sarakstu

Šī definīcija parāda, kā izveidot rindu ar inicializētāju sarakstu:

rinda rinda (1.1, 2.2, 3.3, 4.4);

Rindas iznīcināšana

Lai iznīcinātu rindu, vienkārši ļaujiet tai iziet no darbības jomas.

Piekļuve rindas elementam

push (vērtība)

Rinda ir saraksts “First-in-First-Out”. Tātad katra vērtība tiek pievienota no aizmugures. Šis koda segments izveido tukšu rindu, pēc kuras no aizmugures tiek pievienotas piecas peldošās vērtības:

rinda rinda;
rinda.spiediet (1.1);
rinda.spiediet (2.2);
rinda.spiediet (3.3);
rinda.spiediet (4.4);
rinda.spiediet (5.5);

lielums () konst

Tas atgriež rindas elementu skaitu. Šis kods ilustrē:

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

Rezultāts ir 5.

priekšā ()

Tas atgriež atsauci uz rindas pirmo elementu, nenoņemot elementu. Šī koda izeja ir 1.1.

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

Elements netiek noņemts no rindas.

priekšpuse () konst

Kad rindas sastādīšanas priekšā ir konst, vārda “front ()” vietā tiek izpildīts izteiciens “front () const”. Tas tiek izmantots, piemēram, šajā kodā.

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

Tiek atgriezta pastāvīga atsauce. Elements netiek noņemts no vektora. Rindas elementus nevar mainīt.

atpakaļ ()

Tas atgriež atsauci uz rindas pēdējo elementu, nenoņemot elementu. Šī koda izeja ir 5.5.

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

atpakaļ () konst

Kad rindas sastādīšanas priekšā ir konst, “back ()” vietā tiek izpildīts izteiciens “back () const”. Tas tiek izmantots, piemēram, šajā kodā.

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

Tiek atgriezta pastāvīga atsauce. Elements netiek noņemts no rindas. Ar iepriekšējo rindas sastādīšanas konst. Rindas elementus nevar mainīt.

Rindas ietilpība

lielums () konst

- Skatīt iepriekš

tukšs () konst

Tas atgriež vērtību 1, ja rindā nav elementu, vai 0 - vērtību, ja rinda ir tukša. Šis kods ilustrē to:

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

Rezultāts ir:

0
1

Rindas modifikatori

pop ()

Rinda ir FIFO, tāpēc jebkurš elements, kas jānoņem, ir jānoņem no rindas augšdaļas (galvas). Šī dalībnieka funkcija noņem pirmo elementu, to neatgriežot. Šis kods ilustrē to:

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

Rezultāts ir:

1.1
4

a.apmainīt (b)

Var attēlot divas rindas, kā parādīts šajā kodu segmentā:

rinda que1 (1.1, 2.2, 3.3, 4.4, 5.5);
rinda que2 (10, 20);
1. rinda.mijmaiņas (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.priekšā () <<", "<< que2.size() << '\n';

Rezultāts ir:

1. rindas elements un lielums: 10, 2

Pirmais que2 elements un lielums: 1.1, 5

Ņemiet vērā, ka rindas garums tiek palielināts, ja nepieciešams. Arī vērtības, kurām nebija aizstājēju, aizstāj ar kādu noklusējuma vērtību. Datu tipiem jābūt vienādiem.

Vienlīdzības un attiecību operatori rindās

Parastajām rakstzīmēm C ++ augošā secībā skaitļi ir pirms lielajiem burtiem, kas ir pirms mazajiem burtiem. Kosmosa raksturs ir pirms nulles un visi no tiem.

Vienlīdzības operatori

Atgriež 1 par true un 0 par false.

== Operators

Atgriež 1, ja abām rindām ir vienāds lielums un atbilstošie elementi ir vienādi; pretējā gadījumā tas atgriež 0. Piemērs:

rinda que1 ("kind", "kaut kas cits");
rinda que2 ("ļaunais");
int num = que1 == que2;
cout << num << '\n';

Rezultāts ir: 0.

The != Operators

- pretēji iepriekšminētajam. Piemērs:

rinda que1 ("kind", "kaut kas cits");
rinda que2 ("ļaunais");
int num = que1 != que2;
cout << num << '\n';

Rezultāts ir: 1.

Relāciju operatori

Atgriež 1 par true un 0 par false.

The < Operator

Atgriež 1, ja pirmā rinda ir otrās rindas sākotnējā apakškopa, un abu vienādu daļu elementi ir vienādi un vienā secībā. Ja abas rindas ir vienāda lieluma vai dažāda lieluma un pārvietojoties no kreisās uz labo, pirmajā rindā tiek sastapts elements, kas ir mazāks par atbilstošo elementu otrajā rindā, tad 1 joprojām tiks atgriezts. Pretējā gadījumā 0 tiek atgriezts. Piemērs:

rinda que1 ("kind", "kaut kas cits");
rinda que2 ("ļaunais");
int num = que1 < que2;
cout << num << '\n';

Rezultāts ir 1. < does not include the case when the size and order are the same.

Operators

- pretēji iepriekšminētajam. Piemērs:

rinda que1 ("kind", "kaut kas cits");
rinda que2 ("ļaunais");
int num = que1> que2;
cout << num << '\n';

Izeja: 0

The <= Operator

- tāds pats kā < but includes the case when the size and order are the same. Example:

rinda que1 ("kind", "kaut kas cits");
rinda que2 ("ļaunais");
int num = que1 <= que2;
cout << num << '\n';

Izeja: 1

Operators> =

- pretēji iepriekšminētajam. Piemērs:

rinda que1 ("kind", "kaut kas cits");
rinda que2 ("ļaunais");
int num = que1> = que2;
cout << num << '\n';

Izeja: 0

Klase un tās tūlītējie objekti

Vērtība attiecas uz datu tipu, tāpat kā momentizēts objekts ir uz klasi. Rindas konstrukcija var arī pieņemt klasi kā datu tipu. To ilustrē šāda programma:

# iekļaut
# iekļaut
izmantojot nosaukumvietu std;
klase TheCla

publiski:
int num;
statiskā char ch;
void func (char cha, const char * str)

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

statisks tukšums (char ch)

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

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
rinda rinda;
rinda.grūst (obj1); rinda.grūdiens (obj2); rinda.grūdiens (obj3); rinda.grūdiens (obj4); rinda.grūdiens (obj5);
cout << que.size() << '\n';
atgriešanās 0;

Rezultāts ir 5.

Saistītais saraksts

Rindu sarakstu tehniski sauc par saistīto sarakstu. Rindai ir divu veidu saistītie saraksti: atsevišķi saistīts saraksts un divreiz saistīts saraksts.

Atsevišķi saistītu saraksta elementu var īstenot divu dalībnieku struktūra. Vienam loceklim ir rādītājs uz nākamo elementu, bet otram loceklim ir punkts (vienskaitlis datiem).

Divkārši saistītu saraksta elementu var īstenot trīs locekļu struktūra. Vidējam loceklim ir atsauces punkts, bet pirmajam un trešajam loceklim ir norādes uz blakus esošajiem elementiem.

Rindas pieteikumi

Rinda ir datu struktūra “pirmais iekšā pirmais”. Skaitļošanā ir situācijas, kad dati nonāk rindas formā, tāpēc ir nepieciešama darbība “pirmais iekšā pirmais”.

Datoru resursu koplietošana

Resurss datorā ir jebkurš ierobežotas pieejamības fizisks vai virtuāls komponents. Tie ietver CPU, videokarti, cieto disku un atmiņu. Šāda resursa koplietošanai ir nepieciešama rinda.

Pārtraukumu apstrāde

Datoru perifērijām laiku pa laikam jāpārtrauc dators. Ar pārtraukumiem ir jātiek galā tāpat, kā viņi ieradās. Tam nepieciešama rinda.

Pārvaldiet informāciju.

Rindu var izmantot, piemēram, lai pārvaldītu darba lietojumprogrammu failus, ja faili ir saglabāti datorā.

Secinājums

Rinda ir saraksta datu struktūra, kas ir vai nu atsevišķi saistīts, vai divkārši saistīts saraksts. Parasti pirmais elements, kas ienāk sarakstā, ir pirmais, kas iznāk. C ++ nodrošina rindas datu struktūru savā standarta bibliotēkā. Šai struktūrai pieejamās dalībnieku funkciju un operatoru kategorijas ir rindas sastādīšana, piekļuve rindas elementiem, rindas ietilpība, rindas modifikatori un rindas pārslogoti operatori.

Jebkurai rindas datu struktūrai jānodrošina vismaz push () un pop () dalībnieka funkcijas. push () nozīmē jauna elementa nosūtīšanu rindas aizmugurē; un pop () nozīmē, ka tiek noņemts elements, kas atrodas rindas sākumā. Diemžēl C ++ versijā šīs funkcijas neatgriež izspiesto vai uznirstošo vērtību. Tātad, lai uzzinātu pēdējo elementu pirms stumšanas, ir jāizmanto papildus funkcija back (); un, lai uzzinātu pirmo elementu pirms popping, ir jāizmanto papildu front () funkcija.

Vērtība attiecas uz datu tipu, tāpat kā momentizēts objekts ir uz klasi. Tātad konkrētu klasi var izmantot kā datu tipu rindas veidnes instantiation. Dažādi klases priekšmeti kļūst par dažādām klases vērtībām.

Rindā ir lietojumprogrammas datorā. To var izmantot, piemēram, lai pārvaldītu darba lietojumprogrammu failus, ja faili tiek glabāti datorā.

Chrys

Kontrolējiet un pārvaldiet peles kustību starp vairākiem monitoriem sistēmā Windows 10
Dual Display Mouse Manager ļauj kontrolēt un konfigurēt peles kustību starp vairākiem monitoriem, palēninot tās kustību robežas tuvumā. Windows 10/8 ļ...
WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...