C ++

Kaip naudoti C ++ eilę

Kaip naudoti C ++ eilę

Įvadas

Eilė yra elementų rinkinys, kur pirmasis į sąrašą įtrauktas elementas turi būti pirmasis pašalinamas elementas. Taigi, kai daiktai pridedami prie kolekcijos, jos dydis auga, t.e. jis ilgėja. Kiekvieną daiktą pašalinus, jis turi būti pirmasis. Jei daiktai pašalinami nuolat, kitas pašalinamas yra antrasis elementas; trečias po to pašalinamas ir pan.

Pašalinus pirmąjį pirminio sąrašo elementą, antrasis tampa pirmuoju elementu. Pašalinus antrąjį elementą, trečiasis tampa pirmuoju ir t.

Geras realus eilės pavyzdys yra tai, kai žmonės rikiuojasi laukdami paslaugos ar gero. Pirmasis asmuo tarnauja pirmas prieš paskutinį. Tačiau eilė, apie kurią kalbėta šioje pamokoje, yra programinės įrangos eilė, suprojektuota C++.

FIFO

FIFO reiškia „First-In“, „First-Out“. Tai dar vienas būdas įvertinti eilę. Tai reiškia, kad pirmasis elementas, įtrauktas į sąrašą, yra pirmasis elementas, kuris turi būti pašalintas, kai tik jis turi būti pašalintas. Sąrašo pradžia vadinama galva arba priekiu; sąrašo pabaiga vadinama nugara ar 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.

pamainą

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

Š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 kintamųjų ir funkcijų rinkinys, veikiantis kartu, kai kintamieji neturi priskirtų reikšmių. Kai kintamiesiems priskiriamos reikšmė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 vertėmis. Sakoma, kad kuriant objektą iš klasės, objektas yra momentinis.

Pavadinimas, eilė yra klasė. Objektas, sukurtas iš eilės klasės, turi programuotojo pasirinktą pavadinimą.

Klasei priklausanti funkcija reikalinga objektui iš klasės sukurti. Programoje C ++ ši funkcija turi tą patį pavadinimą kaip ir klasės pavadinimas. Objektai, sukurti (instancijuoti) iš klasės, turi skirtingus pavadinimus, kuriuos jiems suteikia programuotojas.

Objekto sukūrimas iš klasės reiškia objekto sukūrimą; tai taip pat reiškia akimirksnį.

C ++ programa, naudojanti eilių klasę, prasideda šiomis eilutėmis failo viršuje:

# įtraukti
# įtraukti
naudojant vardų sritį std;

Pirmoji eilutė skirta įvesties / išvesties. Antroji eilutė - leisti programai naudoti visas eilės klasės funkcijas. Trečioji eilutė leidžia programai naudoti vardus standartinėje vardų srityje.

Funkcijos perkrova

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

Statyba

eilė vardas()

Ši deklaracija sukuria eilės pavadinimą, eilės tipo int.

eilė eilė;

Eilė tuščia. Deklaracija prasideda rezervuotu žodžiu, eile, po kurios yra kampiniai skliaustai su duomenų tipu. Tada jūs turite programuotojui suteikti eilės pavadinimą.

Konstrukcija naudojant inicializatorių sąrašą

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

eilė eilė (1.1, 2.2, 3.3, 4.4);

Eilės naikinimas

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

Prieiga prie eilės elemento

stumti (vertė)

Eilė yra „First-in-First-Out“ sąrašas. Taigi, kiekviena vertė pridedama iš galo. Šis kodo segmentas sukuria tuščią eilę, po kurios iš galo pridedamos penkios kintamosios vertės:

eilė eilė;
eilė.stumti (1.1);
eilė.stumti (2.2);
eilė.stumti (3.3);
eilė.stumti (4.4);
eilė.stumti (5.5);

dydis () konst

Tai pateikia eilės elementų skaičių. Šis kodas iliustruoja:

eilė eilė;
eilė.stumti (1.1); eilė.stumti (2.2); eilė.stumti (3.3); eilė.stumti (4.4); eilė.stumti (5.5);
cout << que.size() << '\n';

Išvestis yra 5.

priekis ()

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

eilė eilė;
eilė.stumti (1.1); eilė.stumti (2.2); eilė.stumti (3.3); eilė.stumti (4.4); eilė.stumti (5.5);
cout << que.front() << '\n';

Elementas nepašalinamas iš eilės.

priekis () konst

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

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

Grąžinama pastovi nuoroda. Elementas nėra pašalinamas iš vektoriaus. Eilės elementų pakeisti negalima.

atgal ()

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

eilė eilė;
eilė.stumti (1.1); eilė.stumti (2.2); eilė.stumti (3.3); eilė.stumti (4.4); eilė.stumti (5.5);
cout << que.back() << '\n';

atgal () konst

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

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

Grąžinama pastovi nuoroda. Elementas nepašalinamas iš eilės. Su ankstesne eilės sudarymo konstante eilės elementų pakeisti negalima.

Eilės talpa

dydis () konst

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

tuščias () konst

Pateikiama 1 reikšmė „true“, jei eilėje nėra elementų, arba 0 - „false“, jei eilė tuščia. Tai iliustruoja šis kodas:

eilė 1 eilutė (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que1.empty() << '\n';
eilė que2;
cout << que2.empty() << '\n';

Rezultatas 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ą negrąžindama jo. Tai iliustruoja šis kodas:

eilė eilė (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';
eilė.popsas ();
cout << que.size() << '\n';

Rezultatas yra:

1.1
4

a.apsikeisti (b)

Kaip pavaizduota šiame kodų segmente, galima sukeisti dvi eiles:

eilė 1 eilutė (1.1, 2.2, 3.3, 4.4, 5.5);
eilė que2 (10, 20);
1 eilutė.apsikeitimas (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
2 eilutė.priekis () <<", "<< que2.size() << '\n';

Rezultatas yra:

Pirmasis que1 elementas ir dydis: 10, 2

Pirmasis que2 elementas ir dydis: 1.1, 5

Atminkite, kad, jei reikia, eilės ilgis padidinamas. Be to, reikšmės, neturinčios pakeitimų, 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 eina prieš didžiąsias, o prieš mažąsias. Erdvės simbolis yra prieš nulį ir visi jie.

Lygybės operatoriai

Pateikia 1 už teisingą ir 0 už klaidingą.

== Operatorius

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

eilė que1 ("natūra", "kažkas kita");
eilė que2 ("nedorėlis");
int num = que1 == que2;
cout << num << '\n';

Išvestis yra: 0.

The != Operatorius

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

eilė que1 ("natūra", "kažkas kita");
eilė que2 ("nedorėlis");
int num = que1 != que2;
cout << num << '\n';

Išvestis yra: 1.

Ryšių operatoriai

Pateikia 1 už teisingą ir 0 už klaidingą.

The < Operator

Grąžina 1, jei pirmoji eilė yra pradinis antrosios eilės pogrupis, kai dviejų lygių dalių elementai yra vienodi ir ta pačia tvarka. Jei abi eilės yra vienodo dydžio arba skirtingo dydžio ir juda iš kairės į dešinę, pirmoje eilėje susiduria elementas, kuris yra mažesnis nei atitinkamas antrosios eilės elementas, tada 1 vis tiek bus grąžintas. Kitu atveju grąžinama 0. Pavyzdys:

eilė que1 ("natūra", "kažkas kita");
eilė que2 ("nedorėlis");
int num = que1 < que2;
cout << num << '\n';

Išvestis yra 1. < does not include the case when the size and order are the same.

Operatorius

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

eilė que1 ("natūra", "kažkas kita");
eilė que2 ("nedorėlis");
int num = que1> que2;
cout << num << '\n';

Išvestis: 0

The <= Operator

- taip pat kaip < but includes the case when the size and order are the same. Example:

eilė que1 ("natūra", "kažkas kita");
eilė que2 ("nedorėlis");
int num = que1 <= que2;
cout << num << '\n';

Išvestis: 1

Operatorius> =

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

eilė que1 ("natūra", "kažkas kita");
eilė que2 ("nedorėlis");
int num = que1> = que2;
cout << num << '\n';

Išvestis: 0

Klasė ir jos momentiniai objektai

Vertė yra duomenų tipui, kaip momentinis objektas - klasei. Eilės konstrukcija taip pat gali priimti klasę kaip duomenų tipą. Tai iliustruoja ši programa:

# įtraukti
# įtraukti
naudojant vardų sritį std;
klasė „TheCla“

vieša:
int num;
statinis char ch;
negaliojantis func (char cha, const char * str)

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

statinis tuštumas (char ch)

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

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
eilė eilė;
eilė.stumti (obj1); eilė.stumti (obj2); eilė.stumti (obj3); eilė.stumti (obj4); eilė.stumti (obj5);
cout << que.size() << '\n';
grąžinti 0;

Išvestis 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 turi rodyklę prie kito elemento, o kitas narys turi atskaitos tašką (vienaskaita duomenims).

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

Eilės programos

Eilė yra „pirmas į pirmą“ duomenų struktūra. Skaičiuojant yra situacijų, kai duomenys gaunami eilės forma, todėl reikia elgtis „pirmas iš pirmo“.

Dalijimasis kompiuterio ištekliais

Ištekliai kompiuteryje yra bet kokie fiziniai ar virtualūs riboto prieinamumo komponentai. Jie apima procesorių, vaizdo plokštę, standųjį diską ir atmintį. Dalijantis tokiu ištekliu reikia eilės.

Tvarkyti pertraukas

Kompiuterių išoriniai įrenginiai turi laikas nuo laiko pertraukti kompiuterį. Su pertraukėliais reikia elgtis taip pat, kaip ir atvykus. Tam reikia eilės.

Tvarkykite informaciją.

Eilę galima naudoti, pavyzdžiui, tvarkant darbo programos failus, jei failai yra saugomi kompiuteryje.

Išvada

Eilė yra sąrašo duomenų struktūra, kuri yra atskirai susietas sąrašas arba dvigubai susietas sąrašas. Paprastai pirmasis elementas, patekęs į sąrašą, yra pirmasis elementas. C ++ pateikia eilės duomenų struktūrą savo standartinėje bibliotekoje. Narių funkcijų ir operatorių, galinčių naudoti šią struktūrą, kategorijos yra eilės sudarymas, prieiga prie eilės elementų, eilės talpa, eilės modifikatoriai ir eilės perkrovos operatoriai.

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

Vertė yra duomenų tipui, kaip momentinis objektas - klasei. Taigi, tam tikra klasė gali būti naudojama kaip duomenų tipas eilės šablonui išgauti. Skirtingi klasės objektai tampa tarsi skirtingomis klasės vertybėmis.

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

Chrys

Įdiekite naujausią „OpenRA“ strategijos žaidimą „Ubuntu Linux“
„OpenRA“ yra „Free / Free Real Time Strategy“ žaidimų variklis, atkuriantis ankstyvuosius „Westwood“ žaidimus, tokius kaip klasikinis „Command & Conqu...
Įdiekite naujausią „Dolecin Emulator“, skirtą „Gamecube“ ir „Wii“, sistemoje „Linux“
„Delfinų emuliatorius“ leidžia žaisti pasirinktus „Gamecube“ ir „Wii“ žaidimus „Linux“ asmeniniuose kompiuteriuose (PC). „Dolphin Emulator“ yra laisv...
Kaip naudoti „GameConqueror Cheat Engine“ sistemoje „Linux“
Straipsnyje pateikiamas „GameConqueror“ apgaulės variklio naudojimo „Linux“ vadove. Daugelis žaidėjų, žaidžiančių sistemoje „Windows“, dažnai naudoja ...