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Šī deklarācija momentāno rindu ar nosaukumu, rinda tipa int.
rindaRinda 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:
rindaRindas 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:
rindarinda.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ē:
rindarinda.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.
rindarinda.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 rindacout << 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.
rindarinda.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 rindacout << 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:
rindacout << que1.empty() << '\n';
rinda
cout << que2.empty() << '\n';
Rezultāts ir:
01
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:
rindacout << que.front() << '\n';
rinda.pops ();
cout << que.size() << '\n';
Rezultāts ir:
1.14
a.apmainīt (b)
Var attēlot divas rindas, kā parādīts šajā kodu segmentā:
rindarinda
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:
rindarinda
int num = que1 == que2;
cout << num << '\n';
Rezultāts ir: 0.
The != Operators
- pretēji iepriekšminētajam. Piemērs:
rindarinda
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:
rindarinda
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:
rindarinda
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:
rindarinda
int num = que1 <= que2;
cout << num << '\n';
Izeja: 1
Operators> =
- pretēji iepriekšminētajam. Piemērs:
rindarinda
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.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