Kaip naudotis „C ++ Queue“

How Use C Queue



Įvadas

Eilė yra elementų rinkinys, kuriame pirmasis į sąrašą įtrauktas elementas turi būti pirmasis elementas, kuris bus pašalintas toliau. Taigi, kai kolekcija papildoma daiktais, ji vis didėja, t. Y. Ilgėja. Kai bet kuris elementas turi būti pašalintas, jis turi būti pirmas. Jei elementai nuolat šalinami, tada kitas pašalinamas antrasis elementas; trečias pašalinamas vėliau ir pan.

Pašalinus pirmąjį pradinio sąrašo elementą, antrasis tampa pirmuoju elementu. Pašalinus antrąjį elementą, trečias tampa pirmuoju elementu ir pan.







Geras realaus gyvenimo eilės pavyzdys yra tada, kai žmonės išsirikiuoja laukti paslaugos ar prekės. Pirmasis asmuo įteikiamas pirmas prieš paskutinį. Tačiau eilė, apie kurią kalbėta šioje pamokoje, yra programinės įrangos eilė, sukurta C ++.



FIFO

FIFO reiškia First-In, First-Out. Tai dar vienas būdas įvertinti eilę. Tai reiškia, kad pirmasis elementas, patekęs į sąrašą, yra pirmasis elementas, kuris turi būti pašalintas, kai tik jis bus pašalintas. Sąrašo pradžia vadinama galva arba priekiu; sąrašo pabaiga vadinama nugara arba uodega.



Esminės operacijos

Programinės įrangos eilėje turi būti bent šios operacijos:





stumti

Ši operacija prideda naują elementą eilės gale. Ši operacija oficialiai vadinama enqueue.



pamaina

Ši operacija pašalina pirmąjį eilės elementą, o antrasis elementas tampa nauju pirmuoju elementu. Ši operacija oficialiai vadinama dequeue. C ++ jis vadinamas pop.

Šiame straipsnyje paaiškinta, kaip naudoti C ++ eilės duomenų struktūrą. Turėtumėte žinoti C ++ rodykles ir nuorodas, kad suprastumėte likusią šio straipsnio dalį.

Klasė ir objektai

Klasė yra kartu veikiančių kintamųjų ir funkcijų rinkinys, kai kintamiesiems nėra priskirtos vertės. Kai kintamiesiems priskiriamos vertės, klasė tampa objektu. Skirtingos tos pačios klasės vertės suteikia skirtingus objektus; tai yra, skirtingi objektai yra ta pati klasė su skirtingomis reikšmėmis. Sakoma, kad objekto sukūrimas iš klasės yra objekto išradimas.

Pavadinimas, eilė, yra klasė. Iš eilės klasės sukurtas objektas turi programuotojo pasirinktą pavadinimą.

Funkcija, priklausanti klasei, reikalinga objektui iš klasės išvesti. C ++ ta funkcija turi tą patį pavadinimą kaip ir klasės pavadinimas. Iš klasės sukurti (atkurti) objektai turi skirtingus programuotojo pavadinimus.

Sukurti objektą iš klasės reiškia objekto konstravimą; tai taip pat reiškia akimirksnį.

C ++ programa, kuri naudoja eilės klasę, prasideda šiomis eilutėmis failo viršuje:

#įtraukti
#įtraukti
naudojant vardų srities standartą;

Pirmoji eilutė skirta įėjimui/išėjimui. Antroji eilutė - leisti programai naudoti visas eilės klasės funkcijas. Trečioji eilutė leidžia programai naudoti standartinėje vardų erdvėje esančius pavadinimus.

Funkcijos perkrovimas

Kai du ar daugiau skirtingų funkcijų parašų turi tą patį pavadinimą, sakoma, kad tas pavadinimas yra perkrautas. Kai iškviečiama viena funkcija, argumentų skaičius ir tipas nustato, kuri funkcija iš tikrųjų vykdoma.

Statyba

eilė<tipo>vardas()

Ši deklaracija parodo eilę pavadinimu, eilė tipo int.

eilė<tarpt>kad;

Eilė tuščia. Deklaracija prasideda rezervuotu žodžiu „queue“, po kurio eina kampiniai skliausteliai su duomenų tipu. Tada turite programuotojo eilės pavadinimą.

Konstrukcija naudojant inicializatorių sąrašą

Šis apibrėžimas parodo, kaip sukurti eilę su inicializatorių sąrašu:

eilė<plūdė>kad({1.1, 2.2, 3.3, 4.4});

Eilės sunaikinimas

Norėdami sunaikinti eilę, tiesiog leiskite jai išeiti iš taikymo srities.

Prieiga prie eilės elemento

stumti (vertė)

Eilė yra sąrašas „Pirmasis iš pirmųjų“. Taigi, kiekviena vertė pridedama iš galo. Šis kodo segmentas sukuria tuščią eilę, po kurios iš galo pridedamos penkios plūdės vertės:

eilė<plūdė>kad;

kad.stumti(1.1);
kad.stumti(2.2);
kad.stumti(3.3);
kad.stumti(4.4);
kad.stumti(5.5);

dydis () konst

Tai grąžina elementų skaičių eilėje. Šis kodas iliustruoja:

eilė<plūdė>kad;
kad.stumti(1.1);kad.stumti(2.2);kad.stumti(3.3);kad.stumti(4.4);kad.stumti(5.5);
kaina<<kad.dydžio() << ' n';

Išėjimas yra 5.

priekis ()

Tai grąžina nuorodą į pirmąjį eilės elementą, nepašalinus elemento. Šio kodo išvestis yra 1.1.

eilė<plūdė>kad;
kad.stumti(1.1);kad.stumti(2.2);kad.stumti(3.3);kad.stumti(4.4);kad.stumti(5.5);
kaina<<kad.priekyje() << ' n';

Elementas nepašalinamas iš eilės.

priekis () konst

Kai prieš eilės konstrukciją rašoma „const“, vietoj „front“ () vykdoma išraiška front () const. Pavyzdžiui, jis naudojamas šiame kode.

konsteilė<plūdė>kad({1.1, 2.2, 3.3, 4.4, 5.5});
kaina<<kad.priekyje() << ' n';

Pateikiama nuolatinė nuoroda. Elementas nepašalinamas nuo vektoriaus. Eilės elementų pakeisti negalima.

atgal ()

Tai grąžina nuorodą į paskutinį eilės elementą, nepašalinus elemento. Šio kodo išvestis yra 5.5.

eilė<plūdė>kad;
kad.stumti(1.1);kad.stumti(2.2);kad.stumti(3.3);kad.stumti(4.4);kad.stumti(5.5);
kaina<<kad.atgal() << ' n';

atgal () konst

Kai prieš eilės konstrukciją rašoma „const“, vietoj „back“ () vykdoma išraiška back () const. Pavyzdžiui, jis naudojamas šiame kode.

konsteilė<plūdė>kad({1.1, 2.2, 3.3, 4.4, 5.5});
kaina<<kad.atgal() << ' n';

Pateikiama nuolatinė nuoroda. Elementas nepašalinamas iš eilės. Naudojant ankstesnę eilės konstravimo konstantą, eilės elementų pakeisti negalima.

Eilės talpa

dydis () konst

- pažiūrėkite aukščiau

tuščias () konst

Tai grąžina 1, jei tiesa, jei eilėje nėra elementų, arba 0, jei eilutė tuščia. Toliau pateiktas kodas tai iliustruoja:

eilė<plūdė>kad1({1.1, 2.2, 3.3, 4.4, 5.5});
kaina<<kad1.tuščia() << ' n';
eilė<plūdė>kad2;
kaina<<kad2.tuščia() << ' n';

Išėjimas yra:

0
1

Eilės modifikatoriai

pop ()

Eilė yra FIFO, todėl visi elementai, kuriuos reikia pašalinti, turi būti pašalinti iš eilės viršaus (galvos). Ši nario funkcija pašalina pirmąjį elementą jo negrąžindama. Toliau pateiktas kodas tai iliustruoja:

eilė<plūdė>kad({1.1, 2.2, 3.3, 4.4, 5.5});
kaina<<kad.priekyje() << ' n';
kad.pop();
kaina<<kad.dydžio() << ' n';

Išėjimas yra:

1.1
4

a. apsikeitimas (b)

Galima pakeisti dvi eiles, kaip parodyta šiame kodo segmente:

eilė<plūdė>kad1({1.1, 2.2, 3.3, 4.4, 5.5});
eilė<plūdė>kad2({10, dvidešimt});
kad1.apsikeisti(kad2);
kaina<< „Pirmasis eilutės elementas ir dydis:
'
<<kad1.priekyje() <<','<<kad1.dydžio() << ' n';
kaina<< „Pirmasis elementas ir que2 dydis“<<
kad2.priekyje() <<','<<kad2.dydžio() << ' n';

Išėjimas yra:

Pirmasis eilutės elementas ir dydis1: 10, 2

Pirmasis elementas ir que2 dydis: 1.1, 5

Atminkite, kad prireikus eilės ilgis padidinamas. Be to, vertės, kurių nebuvo pakeista, pakeičiamos tam tikra numatytąja verte. Duomenų tipai turi būti to paties tipo.

Eilių lygybės ir santykių operatoriai

Paprastiems simboliams C ++ didėjančia tvarka skaičiai pateikiami prieš didžiąsias raides, o prieš mažąsias raides. Erdvės simbolis yra prieš nulį ir visi jie.

Lygybės operatoriai

Grąžina 1 teisingą ir 0 klaidingą.

== Operatorius

Grąžina 1, jei abi eilės yra vienodo dydžio ir atitinkami elementai yra lygūs; kitaip grąžina 0. Pavyzdys:

eilė<konst anglis*>kad1({'malonus', 'kažkas kito'});
eilė<konst anglis*>kad2({'piktas'});
tarptant vieno=kad1==kad2;
kaina<<ant vieno<< ' n';

Išėjimas yra: 0.

The! = Operatorius

- priešingai nei aukščiau. Pavyzdys:

eilė<konst anglis*>kad1({'malonus', 'kažkas kito'});
eilė<konst anglis*>kad2({'piktas'});
tarptant vieno=kad1! =kad2;
kaina<<ant vieno<< ' n';

Išėjimas yra: 1.

Santykių operatoriai

Grąžina 1 teisingą ir 0 klaidingą.

The

Grąžina 1, jei pirmoji eilė yra pradinis antrosios eilės pogrupis, o dviejų lygių dalių elementai yra vienodi ir ta pačia tvarka. Jei abi eilės yra vienodo dydžio arba skirtingų dydžių ir juda iš kairės į dešinę, pirmoje eilėje susiduriama su elementu, kuris yra mažesnis už atitinkamą antrosios eilės elementą, tada 1 vis tiek bus grąžintas. Priešingu atveju grąžinamas 0. Pavyzdys:

eilė<konst anglis*>kad1({'malonus', 'kažkas kito'});
eilė<konst anglis*>kad2({'piktas'});
tarptant vieno=kad1<kad2;
kaina<<ant vieno<< ' n';

Išėjimas yra 1.

> Operatorius

- priešingai nei aukščiau. Pavyzdys:

eilė<konst anglis*>kad1({'malonus', 'kažkas kito'});
eilė<konst anglis*>kad2({'piktas'});
tarptant vieno=kad1>kad2;
kaina<<ant vieno<< ' n';

Išėjimas: 0

The<= Operator

- taip pat kaip eilė<konst anglis*>kad1({'malonus', 'kažkas kito'});
eilė<konst anglis*>kad2({'piktas'});
tarptant vieno=kad1<=kad2;
kaina<<ant vieno<< ' n';

Išėjimas: 1

> = Operatorius

- priešingai nei aukščiau. Pavyzdys:

eilė<konst anglis*>kad1({'malonus', 'kažkas kito'});
eilė<konst anglis*>kad2({'piktas'});
tarptant vieno=kad1> =kad2;
kaina<<ant vieno<< ' n';

Išėjimas: 0

Klasė ir jos įdiegti objektai

Reikšmė yra duomenų tipui, kaip momentinis objektas - klasei. Eilės konstrukcija taip pat gali priimti klasę kaip duomenų tipą. Toliau pateikta programa tai iliustruoja:

#įtraukti
#įtraukti
naudojant vardų srities standartą;
klasė „TheCla“
{
viešas:
tarptant vieno;
statinis anglisch;
tuštumafunkcija(anglisne, konst anglis *p)
{
kaina<< 'Yra' <<ant vieno<< „vertos knygos“ <<ne<<p<< ' parduotuvėje.' << ' n';
}
statinis tuštumalinksma(anglisch)
{
jei (ch== 'iki')
kaina<< „Oficiali statinio nario funkcija“ << ' n';
}
};
tarptpagrindinis()
{
TheCla obj1;TheCla obj2;TheCla obj3;TheCla obj4;„TheCla obj5“;
eilė<TheCla>kad;
kad.stumti(obj1);kad.stumti(obj2);kad.stumti(obj3);kad.stumti(obj4);kad.stumti(obj5);
kaina<<kad.dydžio() << ' n';
grįžti 0;
}

Išėjimas yra 5.

Susietas sąrašas

Eilių sąrašas techniškai vadinamas susietu sąrašu. Eilėje yra dviejų tipų susieti sąrašai: vienas susietas sąrašas ir dvigubai susietas sąrašas.

Atskirai susietą sąrašo elementą gali įgyvendinti dviejų narių struktūra. Vienas narys laiko žymeklį prie kito elemento, o kitas narys - atskaitos tašką (vienaskaitą duomenims).

Dvigubai susietą sąrašo elementą gali įgyvendinti trijų narių struktūra. Vidurinis elementas turi atskaitos tašką, o pirmasis ir trečiasis - rodykles į gretimus elementus.

Eilės programos

Eilė yra pirmoji duomenų struktūra. Yra situacijų skaičiuojant, kai duomenys gaunami eilės pavidalu, todėl reikia elgtis pirmą kartą.

Dalijimasis kompiuterio ištekliais

Ištekliai kompiuteryje yra bet koks fizinis ar virtualus riboto prieinamumo komponentas. Jie apima procesorių, vaizdo plokštę, standųjį diską ir atmintį. Dalijantis tokiais ištekliais reikia eilės.

Tvarkymo pertraukos

Kompiuterio periferiniai įrenginiai turi kartkartėmis pertraukti kompiuterį. Pertraukos turi būti tvarkomos taip pat, kaip ir atvyko. Tam reikia eilės.

Tvarkyti informaciją.

Eilė gali būti naudojama, pavyzdžiui, tvarkyti darbo programų failus, jei failai saugomi kompiuteryje.

Išvada

Eilė yra sąrašo duomenų struktūra, kuri yra arba atskirai susietas, arba dvigubai susietas sąrašas. Paprastai pirmasis elementas, patekęs į sąrašą, yra pirmasis elementas. „C ++“ standartinėje bibliotekoje pateikia eilės duomenų struktūrą. Šiai struktūrai skirtos narių funkcijų ir operatorių kategorijos yra eilės sudarymas, prieiga prie eilės elementų, eilės talpa, eilės modifikatoriai ir perpildyti eilės operatoriai.

Bet kurioje eilės duomenų struktūroje turi būti bent jau „push“ () ir „pop“ () nario funkcijos. push () reiškia naujo elemento siuntimą eilės gale; ir pop () reiškia pašalinti elementą, esantį eilės priekyje. Deja, naudojant C ++, šios funkcijos negrąžina išstumtos ar iššokusios vertės. Taigi, norint sužinoti paskutinį elementą prieš stumiant, reikia naudoti papildomą atgal () funkciją; ir norint žinoti pirmąjį elementą prieš iššokant, reikia naudoti papildomą priekio () funkciją.

Reikšmė yra duomenų tipui, kaip momentinis objektas - klasei. Taigi, tam tikra klasė gali būti naudojama kaip duomenų tipas eilės šablono momentiniam nustatymui. Skirtingi klasės objektai tampa tarsi skirtingomis klasės vertybėmis.

Eilėje yra programų kompiuteryje. Jis gali būti naudojamas, pavyzdžiui, tvarkyti darbo programų failus, jei failai saugomi kompiuteryje.

Chrys