C ++

A C ++ Queue használata

A C ++ Queue használata

Bevezetés

A várólista olyan elemek gyűjteménye, ahol a listához hozzáadott első elemnek kell először eltávolítania a következőt. Tehát ahogy a tárgyakat hozzáadják a kollekcióhoz, növekszik a mérete, azaz.e. növekszik a hossza. Bármelyik elem eltávolításakor azt kell elsőként hozzáadni. Ha az elemeket folyamatosan eltávolítják, akkor a következő eltávolításra kerül, a második elem; a harmadikat utólag eltávolítják, és így tovább.

Miután eltávolította az eredeti lista első elemét, a második lesz az első elem. A második elem eltávolítása után a harmadik lesz az első elem, és így tovább.

A sorban való életre jó példa, amikor az emberek beállnak a sorba, hogy megvárják a szolgálatot vagy jót. Az első embert először az utolsó előtt szolgálják ki. Azonban ebben az oktatóanyagban a várakozási sor a szoftver várakozási sora, amint azt a C-ben tervezték++.

FIFO

A FIFO az First-In, First-Out rövidítéseket jelenti. Ez egy másik módja a sor megbecsülésének. Ez azt jelenti, hogy az első elem, amely belép a listába, az első elem, amelyet el kell távolítani, valahányszor eltávolításra kerül sor. A lista elejét fejnek vagy elejének nevezzük; a lista végét hátulnak vagy faroknak nevezzük.

Alapvető műveletek

A szoftversornak legalább a következő műveleteket kell végrehajtania:

nyom

Ez a művelet új elemet ad hozzá a sor hátuljához. Ezt a műveletet hivatalosan enqueue-nak hívják.

váltás

Ez a művelet eltávolítja a sor első elemét, és a második elem lesz az új első elem. Ezt a műveletet hivatalosan dequeue-nak hívják. C-ben popnak hívják++.

Ez a cikk elmagyarázza a C ++ várólista adatstruktúrájának használatát. A cikk további részének megértéséhez ismernie kell a C ++ mutatókat és hivatkozásokat.

Osztály és objektumok

Az osztály olyan változók és függvények együttese, amelyek együttesen működnek, ahol a változókhoz nincs hozzárendelve érték. Ha a változókhoz értékeket rendelünk, az osztály objektummá válik. Ugyanazon osztálynak adott különböző értékek különböző objektumokat eredményeznek; vagyis a különböző objektumok azonos osztályba tartoznak, különböző értékekkel. Egy objektum osztályból történő létrehozása állítólag az objektumot példányosítja.

A név, a sor egy osztály. A várólistából létrehozott objektumnak egy programozó által választott neve van.

Egy osztályhoz tartozó függvényre van szükség egy objektum példányosításához az osztályból. A C ++ nyelven ennek a függvénynek ugyanaz a neve, mint az osztály nevének. Az osztályból létrehozott (példányosított) objektumok különböző neveket kaptak a programozótól.

Objektum létrehozása az osztályból az objektum felépítését jelenti; instantizálást is jelent.

Egy C ++ program, amely a várólistát használja, a következő sorokkal kezdődik a fájl tetején:

#include
#include
névtér használata std;

Az első sor a bemenetre / kimenetre vonatkozik. A második sor lehetővé teszi, hogy a program használhassa a várólista összes funkcióját. A harmadik sor lehetővé teszi a program számára a nevek használatát a szokásos névtérben.

Funkció túlterhelése

Ha két vagy több különböző funkció aláírásnak ugyanaz a neve, akkor azt mondják, hogy ez a név túlterhelt. Egy függvény meghívásakor az argumentumok száma és típusa határozza meg, hogy melyik függvényt hajtják végre.

Építkezés

sor név()

A következő deklaráció egy, az int típusú que nevű sort állít elő.

sor que;

A sor üres. A deklaráció a fenntartott szóval, sorral kezdődik, amelyet az adattípussal ellátott szögletes zárójelek követnek. Ezután megadta a programozó nevét a sorhoz.

Konstrukció az inicializáló listával

A következő definíció bemutatja, hogyan lehet létrehozni egy sort az inicializáló listával:

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

Sor megsemmisítése

A sor megsemmisítéséhez hagyja, hogy kijusson a hatókörből.

A várólista-hozzáférés

nyomás (érték)

A várakozási sor egy First-In-First-Out lista. Tehát minden értéket hátulról adunk hozzá. A következő kódszegmens üres sort hoz létre, amely után öt úszó értéket adunk hozzá hátulról:

sor que;
que.nyomja (1.1);
que.nyomja (2.2);
que.nyomja (3.3);
que.nyomja (4.4);
que.nyomja (5.5);

méret () konst

Ez visszaadja a sorban lévő elemek számát. A következő kód szemlélteti:

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

A kimenet 5.

elülső()

Ez a sor első elemére mutat hivatkozást, az elem eltávolítása nélkül. A következő kód kimenete 1.1.

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

Az elem nem kerül eltávolításra a sorból.

elülső () konst

Amikor a várakozási felépítést megelőzi az const, akkor a „front () const” kifejezés kerül végrehajtásra. Például a következő kódban használják.

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

Egy állandó referenciát adunk vissza. Az elem nem kerül eltávolításra a vektorból. A sor elemei nem módosíthatók.

vissza()

Ez a sor utolsó elemére utal, az elem eltávolítása nélkül. A következő kód kimenete 5.5.

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

vissza () konst

Amikor a sor felépítését megelőzi az const, a „back () const” kifejezés kerül végrehajtásra a „back ()” helyett. Például a következő kódban használják.

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

Egy állandó referenciát adunk vissza. Az elem nem kerül eltávolításra a sorból. A sor felépítésének előző konstansával a sorban lévő elemek nem módosíthatók.

Sor kapacitás

méret () konst

- lásd fent

üres () konst

Ez 1 értéket ad vissza true értékre, ha nincsenek elemek a sorban, vagy 0 értéket hamis értékre, ha a sor üres. A következő kód ezt szemlélteti:

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

A kimenet:

0
1

Sor módosítók

pop()

A sor FIFO, ezért minden eltávolítandó elemet el kell távolítani a sor tetejéről (fejéről). Ez a tagfüggvény eltávolítja az első elemet anélkül, hogy visszaadná. A következő kód ezt szemlélteti:

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

A kimenet:

1.1
4

a.csere (b)

Két sor felcserélhető, amint ezt a kódszegmens mutatja:

sor que1 (1.1, 2.2, 3.3, 4.4, 5.5);
sor que2 (10, 20);
que1.csere (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.elülső() <<", "<< que2.size() << '\n';

A kimenet:

A que1 első eleme és mérete: 10, 2

A que2 első eleme és mérete: 1.1, 5

Vegye figyelembe, hogy szükség esetén a sor hossza megnő. Ezenkívül azokat az értékeket, amelyek nem voltak helyettesítők, valamilyen alapértelmezett érték váltja fel. Az adattípusoknak azonos típusúaknak kell lenniük.

Egyenlőség és kapcsolati operátorok a várólistákhoz

A C ++ nyelvű, hétköznapi karakterek esetében növekvő sorrendben a számok nagybetűk elé kerülnek, amelyek kisbetűk elé kerülnek. A szóköz karakter nulla és mindegyik elé kerül.

Egyenlőség operátorok

1-et ad igaznak, 0-t hamisnak.

A == Operátor

1-et ad vissza, ha a két sor azonos méretű és a megfelelő elemek egyenlőek; különben 0-t ad vissza. Példa:

sor que1 ("kedves", "valami más");
sor que2 ("gonosz");
int szám = que1 == que2;
cout << num << '\n';

A kimenet: 0.

A != Operátor

- szemben a fentiekkel. Példa:

sor que1 ("kedves", "valami más");
sor que2 ("gonosz");
int szám = que1 != que2;
cout << num << '\n';

A kimenet: 1.

Relációs operátorok

1-et ad igaznak, 0-t hamisnak.

A < Operator

1-et ad vissza, ha az első sor a második sor kezdeti részhalmaza, a két egyenlő rész elemei azonosak és ugyanabban a sorrendben. Ha mindkét sor azonos méretű vagy különböző méretű, és balról jobbra haladva az első sorban egy olyan elem találkozik, amely kisebb, mint a második sor megfelelő eleme, akkor az 1 továbbra is visszatér. Ellenkező esetben 0-t adunk vissza. Példa:

sor que1 ("kedves", "valami más");
sor que2 ("gonosz");
int szám = que1 < que2;
cout << num << '\n';

A kimenet 1. < does not include the case when the size and order are the same.

Az> Operátor

- szemben a fentiekkel. Példa:

sor que1 ("kedves", "valami más");
sor que2 ("gonosz");
int szám = que1> que2;
cout << num << '\n';

Kimenet: 0

A <= Operator

- ugyanaz, mint a < but includes the case when the size and order are the same. Example:

sor que1 ("kedves", "valami más");
sor que2 ("gonosz");
int szám = que1 <= que2;
cout << num << '\n';

Kimenet: 1

A> = Operátor

- szemben a fentiekkel. Példa:

sor que1 ("kedves", "valami más");
sor que2 ("gonosz");
int szám = que1> = que2;
cout << num << '\n';

Kimenet: 0

Osztály és azonnali tárgyai

Az érték egy adattípusra vonatkozik, mint a példányosított objektum egy osztályra. A várakozási sor egy osztályt is elfogadhat adattípusként. A következő program ezt szemlélteti:

#include
#include
névtér használata std;
osztály TheCla

nyilvános:
int szám;
statikus char ch;
void func (char cha, const char * str)

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

statikus üresség (char ch)

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

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
sor que;
que.nyomás (obj1); que.nyomja (obj2); que.nyomja (obj3); que.nyomja (obj4); que.nyomja (obj5);
cout << que.size() << '\n';
visszatér 0;

A kimenet 5.

Összekapcsolt lista

A várólistát technikailag összekapcsolt listának hívják. Kétféle összekapcsolt lista létezik a várólistához: egyenként és kétszeresen összekapcsolt listák.

Egy-egy összekapcsolt listaelemet két tagból álló struktúra valósíthat meg. Az egyik tag mutatót tart a következő elemre, a másik pedig a nullapontot (egyes szám az adatokra).

A kétszeresen összekapcsolt listaelemet három tagból álló struktúra valósíthatja meg. A középső tag tartja a nullapontot, míg az első és a harmadik tag a szomszédos elemeikre mutat.

A várólista alkalmazásai

A várakozási sor az első az elsőben ki adatstruktúra. Vannak olyan helyzetek a számítás során, amikor az adatok várólista formájában érkeznek, ami szükségessé teszi az első az elsőben-ki viselkedést.

Számítógépes erőforrások megosztása

A számítógép erőforrása a korlátozott rendelkezésre állás bármely fizikai vagy virtuális összetevője. Ezek közé tartozik a CPU, a videokártya, a merevlemez és a memória. Egy ilyen erőforrás megosztásához sorra van szükség.

Megszakítások kezelése

A számítógépes perifériáknak időről időre meg kell szakítaniuk a számítógépet. A megszakításokat ugyanúgy kell kezelni, mint amikor megérkeztek. Ehhez sorra van szükség.

Információk kezelése.

A sor használható például egy munka alkalmazásfájljainak kezelésére, ha a fájlokat a számítógépen tárolják.

Következtetés

A várólista egy lista adatstruktúra, amely egyenként vagy kétszeresen összekapcsolt lista. Általános szabály, hogy az első elem, amely belép a listába, az első elem, amely kijön. A C ++ egy sor adatstruktúrát biztosít a szokásos könyvtárában. Az ehhez a struktúrához rendelkezésre álló tagfunkciók és operátorok kategóriái: a várólista felépítése, a sorelem-hozzáférés, a sorkapacitás, a sormódosítók és a sorban túlterhelt operátorok.

Bármely várólista adatstruktúrának biztosítania kell legalább a push () és a pop () tag funkciókat. a push () azt jelenti, hogy egy új elemet küld a sor hátuljába; a pop () pedig a sor elején található elem eltávolítását jelenti. Sajnos a C ++ nyelven ezek a függvények nem adják vissza a kitolt vagy felbukkanó értéket. Tehát az utolsó elem ismerete a tolás előtt az extra back () függvényt kell használni; és az első elem ismerete a pattanás előtt az extra front () függvényt kell használni.

Az érték egy adattípusra vonatkozik, mint a példányosított objektum egy osztályra. Tehát egy adott osztály használható adattípusként a várólista sablon példányosításához. Az osztály különböző objektumai olyanok lesznek, mint az osztály különböző értékei.

A sorban vannak alkalmazások a számítógépen. Használható például egy alkalmazás alkalmazásfájljainak kezelésére, ha a fájlokat a számítógépen tárolják.

Chrys

Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...
Unity3D bemutató
Bevezetés a Unity 3D-be Az Unity 3D egy erőteljes játékfejlesztő motor. Ez több platformon keresztül lehetővé teszi játékok, mobil, webes, asztali és ...