C ++

Ako používať front C ++

Ako používať front C ++

Úvod

Fronta je kolekcia položiek, kde prvá položka pridaná do zoznamu musí byť prvou položkou, ktorá sa má následne odstrániť. Takže ako sa do zbierky pridávajú predmety, rastie jej veľkosť, t.j.e. rastie do dĺžky. Kedykoľvek sa má odstrániť ktorákoľvek položka, musí sa pridať prvá. Ak sú položky odstraňované nepretržite, potom nasledujúca odstránená je druhá položka; tretia sa potom odstráni atď.

Po odstránení prvej položky z pôvodného zoznamu sa druhá stane prvou položkou. Po odstránení druhej položky sa z tretej stane prvá položka atď.

Dobrým príkladom poradia v reálnom živote je, keď sa ľudia zoradia, aby počkali na službu alebo na tovar. Prvá osoba sa podáva prvá pred poslednou. Poradie, o ktorom sa hovorí v tomto tutoriále, je však poradie softvéru, ako je navrhnuté v jazyku C++.

FIFO

FIFO znamená First-In, First-Out. Je to ďalší spôsob ocenenia poradia. To znamená, že prvá položka, ktorá vstúpi do zoznamu, je prvou položkou, ktorá sa má odstrániť, kedykoľvek sa má vykonať odstránenie. Začiatok zoznamu sa nazýva hlava alebo predok; koniec zoznamu sa nazýva zadná alebo chvostová časť.

Základné operácie

Fronta softvéru musí obsahovať minimálne tieto operácie:

tam

Táto operácia pridáva nový prvok do zadnej časti frontu. Táto operácia sa oficiálne volá, zaradiť do poradia.

posun

Táto operácia odstráni prvý prvok frontu a druhý prvok sa stane novým prvým prvkom. Táto operácia sa oficiálne nazýva dequeue. V C sa nazýva pop++.

Tento článok vysvetľuje, ako používať štruktúru údajov frontu C ++. Mali by ste poznať ukazovatele a odkazy na C ++, aby ste pochopili zvyšok tohto článku.

Trieda a predmety

Trieda je skupina premenných a funkcií, ktoré spolupracujú, pričom premenným nie sú priradené hodnoty. Keď sú premenným priradené hodnoty, trieda sa stane objektom. Rôzne hodnoty dané tej istej triede majú za následok rôzne objekty; to znamená, že rôzne objekty sú rovnakej triedy s rôznymi hodnotami. Vytvorenie objektu z triedy sa považuje za vytvorenie jeho inštancie.

Názov, poradie, je trieda. Objekt vytvorený z triedy frontu má programátorom vybraný názov.

Na vytvorenie inštancie objektu z triedy je potrebná funkcia patriaca do triedy. V jazyku C ++ má táto funkcia rovnaký názov ako názov triedy. Objekty vytvorené (inštancované) z triedy majú programátor pomenované rôznymi názvami.

Vytvorenie objektu z triedy znamená konštrukciu objektu; znamená to aj inštanciu.

Program v C ++, ktorý používa triedu front, sa začína nasledujúcimi riadkami v hornej časti súboru:

#include
#include
pomocou namespace std;

Prvý riadok je pre vstup / výstup. Druhým riadkom je umožniť programu využívať všetky funkcie triedy front. Tretí riadok umožňuje programu používať názvy v štandardnom mennom priestore.

Preťaženie funkcie

Ak majú dva alebo viac rôznych podpisov funkcií rovnaký názov, je tento názov údajne preťažený. Keď sa volá jedna funkcia, počet a typ argumentov určuje, ktorá funkcia sa skutočne vykoná.

Konštrukcia

poradie názov()

Nasledujúca deklarácia vytvorí inštanciu frontu s názvom que typu int.

poradie que;

Poradie je prázdne. Deklarácia sa začína rezervovaným slovom, radom, za ktorým nasledujú lomené zátvorky s dátovým typom. Potom budete mať programátor pomenovaný podľa poradia.

Vytváranie pomocou zoznamu inicializátorov

Nasledujúca definícia ukazuje, ako vytvoriť front so zoznamom inicializátorov:

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

Zničenie fronty

Ak chcete frontu zničiť, nechajte ju mimo rozsahu.

Prístup k prvku fronty

push (hodnota)

Poradie je zoznamom „Prvý-prvý-prvý-prvý“. Každá hodnota sa teda pridáva zozadu. Nasledujúci segment kódu vytvorí prázdny front, po ktorom sa zozadu pridá päť pohyblivých hodnôt:

poradie que;
que.zatlačiť (1.1);
que.zatlačiť (2.2);
que.zatlačiť (3.3);
que.zatlačiť (4.4);
que.zatlačiť (5.5);

veľkosť () konšt

Týmto sa vráti počet prvkov vo fronte. Nasledujúci kód ilustruje:

poradie que;
que.zatlačiť (1.1); que.zatlačiť (2.2); que.zatlačiť (3.3); que.zatlačiť (4.4); que.zatlačiť (5.5);
cout << que.size() << '\n';

Výstup je 5.

predné ()

Týmto sa vráti odkaz na prvý prvok vo fronte bez odstránenia prvku. Výstup nasledujúceho kódu je 1.1.

poradie que;
que.zatlačiť (1.1); que.zatlačiť (2.2); que.zatlačiť (3.3); que.zatlačiť (4.4); que.zatlačiť (5.5);
cout << que.front() << '\n';

Prvok sa neodstráni z poradia.

predné () konšt

Keď pred zostavením frontu predchádza const, namiesto „front ()“ sa vykoná výraz „front () const“. Používa sa napríklad v nasledujúcom kóde.

konštantný front que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';

Konštantná referencia sa vráti. Element nie je odstránený z vektora. Prvky poradia nemožno zmeniť.

späť()

Týmto sa vráti odkaz na posledný prvok vo fronte bez odstránenia prvku. Výstup nasledujúceho kódu je 5.5.

poradie que;
que.zatlačiť (1.1); que.zatlačiť (2.2); que.zatlačiť (3.3); que.zatlačiť (4.4); que.zatlačiť (5.5);
cout << que.back() << '\n';

späť () konšt

Keď pred zostavením frontu predchádza const, namiesto „back ()“ sa vykoná výraz „back () const“. Používa sa napríklad v nasledujúcom kóde.

konštantný front que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.back() << '\n';

Konštantná referencia sa vráti. Prvok sa neodstráni z poradia. S predchádzajúcou konštantou pre konštrukciu frontu nie je možné zmeniť prvky vo fronte.

Kapacita frontu

veľkosť () konšt

- viď vyššie

prázdne () konšt

Vráti hodnotu 1 pre true, ak vo fronte nie sú žiadne prvky, alebo 0 pre false, ak je front prázdny. Ilustruje to nasledujúci kód:

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

Výstup je:

0
1

Modifikátory front

pop ()

Poradie je FIFO, takže všetky prvky, ktoré je potrebné odstrániť, musia byť odstránené z vrchu (hlavy) poradia. Táto členská funkcia odstráni prvý prvok bez jeho vrátenia. Ilustruje to nasledujúci kód:

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

Výstup je:

1.1
4

a.výmena (b)

Je možné zameniť dva fronty, ako je to znázornené v tomto segmente kódu:

poradie que1 (1.1, 2.2, 3.3, 4.4, 5.5);
poradie que2 (10, 20);
que1.swap (que2);
cout << "First element and size of que1:
„<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.predné () <<", "<< que2.size() << '\n';

Výstup je:

Prvý prvok a veľkosť úlohy 1: 10, 2

Prvý prvok a veľkosť que2: 1.1, 5

Upozorňujeme, že dĺžka frontu sa v prípade potreby predĺži. Aj hodnoty, ktoré nemali nahradené, sa nahradia nejakou predvolenou hodnotou. Dátové typy musia byť rovnakého typu.

Rovnosť a relačné operátory pre fronty

V prípade bežných znakov v jazyku C ++ sú vzostupne číslice pred veľkými písmenami, ktoré sú pred malými písmenami. Vesmírny znak prichádza pred nulu a všetky z nich.

Prevádzkovatelia rovnosti

Vráti hodnotu 1 pre true a 0 pre false.

Prevádzkovateľ ==

Vráti hodnotu 1, ak majú dva fronty rovnakú veľkosť a zodpovedajúce prvky sú rovnaké; inak vráti 0. Príklad:

poradie que1 ("kind", "niečo iné");
poradie que2 ("zlý");
int num = que1 == que2;
cout << num << '\n';

Výstup je: 0.

The != Operátor

- opak vyššie uvedeného. Príklad:

poradie que1 ("kind", "niečo iné");
poradie que2 ("zlý");
int num = que1 != que2;
cout << num << '\n';

Výstup je: 1.

Relační operátori

Vráti hodnotu 1 pre true a 0 pre false.

The < Operator

Vráti hodnotu 1, ak je prvý rad počiatočnou podmnožinou druhého radu, pričom prvky dvoch rovnakých častí sú rovnaké a v rovnakom poradí. Ak majú obidva rady rovnakú veľkosť alebo rozdielnu veľkosť a pohybujú sa zľava doprava, v prvom rade sa nachádza prvok, ktorý je menší ako zodpovedajúci prvok v druhom rade, potom sa vráti 1. Inak sa vráti 0. Príklad:

poradie que1 ("kind", "niečo iné");
poradie que2 ("zlý");
int num = que1 < que2;
cout << num << '\n';

Výstup je 1. < does not include the case when the size and order are the same.

Prevádzkovateľ

- opak vyššie uvedeného. Príklad:

poradie que1 ("kind", "niečo iné");
poradie que2 ("zlý");
int num = que1> que2;
cout << num << '\n';

Výstup: 0

The <= Operator

- rovnaké ako < but includes the case when the size and order are the same. Example:

poradie que1 ("kind", "niečo iné");
poradie que2 ("zlý");
int num = que1 <= que2;
cout << num << '\n';

Výstup: 1

Operátor> =

- opak vyššie uvedeného. Príklad:

poradie que1 ("kind", "niečo iné");
poradie que2 ("zlý");
int num = que1> = que2;
cout << num << '\n';

Výstup: 0

Trieda a jej instantizované objekty

Hodnota je pre dátový typ, rovnako ako inštančný objekt pre triedu. Konštrukcia frontu môže tiež prijať triedu ako dátový typ. Nasledujúci program to ilustruje:

#include
#include
pomocou namespace std;
trieda TheCla

verejné:
int num;
statický znak ch;
void func (char cha, const char * str)

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

static void fun (char ch)

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

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
poradie que;
que.tlačiť (obj1); que.tlačiť (obj2); que.tlačiť (obj3); que.tlačiť (obj4); que.tlačiť (obj5);
cout << que.size() << '\n';
návrat 0;

Výstup je 5.

Prepojený zoznam

Zoznam radov sa odborne nazýva prepojený zoznam. Pre poradie existujú dva typy prepojených zoznamov: jednotlivo prepojený zoznam a dvojnásobne prepojený zoznam.

Samostatne prepojený prvok zoznamu môže byť implementovaný štruktúrou dvoch členov. Jeden člen má ukazovateľ na nasledujúci prvok a druhý člen má základný údaj (singulár pre údaje).

Dvojnásobne prepojený prvok zoznamu môže byť implementovaný štruktúrou troch členov. Stredný člen drží vzťažný bod, zatiaľ čo prvý a tretí člen držia ukazovatele na svoje susedné prvky.

Aplikácie frontu

Fronta je dátová štruktúra typu prvý-von-prvý-von. Pri výpočte existujú situácie, keď dáta prichádzajú vo forme frontu, čo si vyžaduje správanie typu „kto je prvý“.

Zdieľanie počítačových zdrojov

Zdrojom v počítači je akákoľvek fyzická alebo virtuálna súčasť s obmedzenou dostupnosťou. Zahŕňajú procesor, grafickú kartu, pevný disk a pamäť. Zdieľanie takéhoto zdroja vyžaduje frontu.

Riešenie prerušení

Počítačové periférie musia počítač občas prerušiť. S prerušeniami sa musí zaobchádzať rovnako, ako prišli. Toto si vyžaduje rad.

Spravovať informácie.

Frontu je možné použiť napríklad na správu súborov aplikácií pre úlohu, ak sú tieto súbory uložené v počítači.

Záver

Fronta je dátová štruktúra zoznamu, ktorá je buď jednotlivo prepojeným zoznamom alebo dvojnásobne prepojeným zoznamom. Prvý prvok, ktorý sa dostane do zoznamu, je spravidla prvým prvkom, ktorý vyjde. C ++ poskytuje štruktúru dát frontu vo svojej štandardnej knižnici. Kategórie členských funkcií a operátorov dostupných pre túto štruktúru sú konštrukcia frontu, prístup k prvkom frontu, kapacita frontu, modifikátory front a operátory preťažené frontom.

Akákoľvek dátová štruktúra frontu musí poskytovať minimálne členské funkcie push () a pop (). push () znamená, odoslanie nového prvku na koniec poradia; a pop () znamená odstránenie prvku, ktorý sa nachádza v prednej časti frontu. Bohužiaľ v C ++ tieto funkcie nevracajú hodnotu, ktorá bola tlačená alebo vyskakujúca. Aby sme teda poznali posledný prvok pred tlačením, musí sa použiť funkcia extra back (); a aby ste poznali prvý prvok pred vyskakovaním, je potrebné použiť funkciu extra front ().

Hodnota je pre dátový typ, rovnako ako inštančný objekt pre triedu. Konkrétnu triedu teda možno použiť ako dátový typ pre inštanciu šablóny frontu. Rôzne objekty pre triedu sa stanú ako rôzne hodnoty pre triedu.

Fronta obsahuje aplikácie v počítači. Môže sa použiť napríklad na správu súborov aplikácií pre úlohu, ak sú súbory uložené v počítači.

Chrys

Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...
Hry Ako nainštalovať League Of Legends na Ubuntu 14.04
Ako nainštalovať League Of Legends na Ubuntu 14.04
Ak ste fanúšikom League of Legends, potom je to pre vás príležitosť otestovať spustenie League of Legends. Upozorňujeme, že program PlayOnLinux podpor...
Hry Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
OpenRA je herný engine Libre / Free Real Time Strategy, ktorý obnovuje rané hry z Westwoodu, ako napríklad klasické Command & Conquer: Red Alert. Dist...