C ++

Hur man använder C ++ kö

Hur man använder C ++ kö

Introduktion

En kö är en samling objekt där det första objektet som läggs till i listan måste vara det första som tas bort nästa. Så när föremål läggs till i samlingen växer den i storlek, dvs.e. den växer i längd. Närhelst något objekt ska tas bort måste det vara det första som läggs till. Om objekt tas bort kontinuerligt, är nästa som tas bort, det andra objektet; den tredje tas bort efteråt och så vidare.

Efter att det första objektet i originallistan har tagits bort blir det andra det första objektet. När det andra objektet har tagits bort blir det tredje det första och så vidare.

Ett bra exempel på kö i verkligheten är när människor ställer upp för att vänta på service eller bra. Den första personen serveras först före den sista. Kön som pratas om i denna handledning är dock mjukvarukön, som designad i C++.

FIFO

FIFO står för First-In, First-Out. Det är ett annat sätt att uppskatta kön. Det betyder att det första objektet som kommer in i listan är det första objektet som ska tas bort närhelst borttagning ska äga rum. Början på listan kallas huvud eller front; slutet av listan kallas bak eller svans.

Viktiga funktioner

En programvarukö måste ha åtminstone följande åtgärder:

skjuta på

Denna åtgärd lägger till ett nytt element längst bak i kön. Denna operation kallas officiellt enqueue.

flytta

Denna åtgärd tar bort det första elementet i kön och det andra elementet blir det nya första elementet. Denna operation kallas officiellt dequeue. Det kallas pop i C++.

Den här artikeln förklarar hur du använder C ++ -kodatastrukturen. Du bör känna till C ++ - pekare och referenser för att förstå resten av den här artikeln.

Klass och objekt

En klass är en uppsättning variabler och funktioner som fungerar tillsammans, där variablerna inte har värden tilldelade. När värden tilldelas variablerna blir klassen ett objekt. Olika värden som ges till samma klass resulterar i olika objekt; det vill säga olika objekt är samma klass med olika värden. Att skapa ett objekt från en klass sägs att det skapar ett objekt.

Namnet, kö, är en klass. Ett objekt som skapats från köklassen har ett programmerat valt namn.

En funktion som tillhör en klass behövs för att instantiera ett objekt från klassen. I C ++ har den funktionen samma namn som namnet på klassen. Objekt som skapats (instantierats) från klassen har olika namn som de har fått av programmeraren.

Att skapa ett objekt från klassen betyder att konstruera objektet; det betyder också omedelbar inställning.

Ett C ++ - program som använder köklassen börjar med följande rader längst upp i filen:

#omfatta
#omfatta
använder namnrymd std;

Den första raden är för in / ut. Den andra raden är att låta programmet använda alla funktioner i köklassen. Den tredje raden tillåter programmet att använda namnen i standardnamnområdet.

Överbelastning av en funktion

När två eller flera olika funktionssignaturer har samma namn, sägs det namnet vara överbelastat. När en funktion anropas bestämmer antalet och typen av argument vilken funktion som faktiskt körs.

Konstruktion

namn()

Följande deklaration initierar en kö med namnet, que of type int.

que;

Kön är tom. Deklarationen börjar med det reserverade ordet, kö följt av vinkelparenteser med datatypen. Då har du programmeraren fått namnet på kön.

Konstruktion med initialiseringslista

Följande definition visar hur man skapar en kö med initialiseringslistan:

que (1.1, 2.2, 3.3, 4.4);

Förstör en kö

För att förstöra en kö, låt den bara gå utanför räckvidden.

Köelementåtkomst

tryck (värde)

En kö är en först-in-först-ut-lista. Så varje värde läggs till bakifrån. Följande kodsegment skapar en tom kö, varefter fem flottörvärden läggs till bakifrån:

que;
que.tryck (1.1);
que.tryck (2.2);
que.tryck (3.3);
que.tryck (4.4);
que.tryck (5.5);

storlek () konst

Detta returnerar antalet element i kön. Följande kod illustrerar:

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

Utgången är 5.

främre()

Detta returnerar en referens till det första elementet i kön utan att ta bort elementet. Utgången för följande kod är 1.1.

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

Elementet tas inte bort från kön.

främre () konst

När kökonstruktionen föregås av const körs uttrycket "front () const" istället för "front ()". Den används till exempel i följande kod.

första kö que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';

En konstant referens returneras. Elementet tas inte bort från vektorn. Köelementen kan inte ändras.

tillbaka()

Detta returnerar en referens till det sista elementet i kön utan att ta bort elementet. Utgången för följande kod är 5.5.

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

tillbaka () konst

När kökonstruktionen föregås av const körs uttrycket "back () const" istället för "back ()". Den används till exempel i följande kod.

första kö que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.back() << '\n';

En konstant referens returneras. Elementet tas inte bort från kön. Med föregående konst för kökonstruktionen kan inte elementen i kön ändras.

Kökapacitet

storlek () konst

- se ovan

tom () konst

Detta returnerar 1 för true om det inte finns några element i kön, eller 0 för false om kön är tom. Följande kod illustrerar detta:

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

Utgången är:

0
1

Kömodifierare

pop()

En kö är FIFO, så alla element som måste tas bort måste tas bort från toppen (huvudet) i kön. Denna medlemsfunktion tar bort det första elementet utan att returnera det. Följande kod illustrerar detta:

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

Utgången är:

1.1
4

a.byta (b)

Två köer kan bytas ut, som illustrerat i detta kodsegment:

que1 (1.1, 2.2, 3.3, 4.4, 5.5);
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.främre() <<", "<< que2.size() << '\n';

Utgången är:

Första elementet och storleken på que1: 10, 2

Första elementet och storleken på que2: 1.1, 5

Observera att längden på en kö ökas vid behov. Värden som inte har ersatt ersätts också med något standardvärde. Datatyperna måste vara av samma typ.

Jämställdhets- och relationsoperatörer för köer

För vanliga tecken i C ++, i stigande ordning, kommer siffrorna framför stora bokstäver, som kommer före små bokstäver. Rymdkaraktären kommer före noll och alla.

Jämställdhetsoperatörer

Returnerar 1 för true och 0 för false.

Operatören ==

Returnerar 1 om de två köerna har samma storlek och motsvarande element är lika; annars returnerar den 0. Exempel:

que1 ("snäll", "något annat");
que2 ("ond");
int num = que1 == que2;
cout << num << '\n';

Utgången är: 0.

De != Operatör

- motsatsen till ovanstående. Exempel:

que1 ("snäll", "något annat");
que2 ("ond");
int num = que1 != que2;
cout << num << '\n';

Utgången är: 1.

Relationsoperatörer

Returnerar 1 för true och 0 för false.

De < Operator

Returnerar 1 om den första kön är den första delmängden av den andra kön, med elementen i de två lika delarna är desamma och i samma ordning. Om båda köerna är av samma storlek eller olika storlekar, och rör sig från vänster till höger, påträffas ett element i den första kön som är mindre än motsvarande element i den andra kön, då kommer 1 fortfarande att returneras. Annars returneras 0. Exempel:

que1 ("snäll", "något annat");
que2 ("ond");
int num = que1 < que2;
cout << num << '\n';

Utgången är 1. < does not include the case when the size and order are the same.

> Operatören

- motsatsen till ovanstående. Exempel:

que1 ("snäll", "något annat");
que2 ("ond");
int num = que1> que2;
cout << num << '\n';

Utgång: 0

De <= Operator

- samma som < but includes the case when the size and order are the same. Example:

que1 ("snäll", "något annat");
que2 ("ond");
int num = que1 <= que2;
cout << num << '\n';

Utgång: 1

Operatören> =

- motsatsen till ovanstående. Exempel:

que1 ("snäll", "något annat");
que2 ("ond");
int num = que1> = que2;
cout << num << '\n';

Utgång: 0

Klass och dess omedelbara objekt

Ett värde är till en datatyp, som ett instanserat objekt till en klass. Kökonstruktionen kan också acceptera en klass som datatyp. Följande program illustrerar detta:

#omfatta
#omfatta
använder namnrymd std;
klass TheCla

offentlig:
int num;
statisk char ch;
void func (char cha, const char * str)

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

statisk tomrumskul (char ch)

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

;
int main ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
que;
que.push (obj1); que.tryck (obj2); que.push (obj3); que.tryck (obj4); que.tryck (obj5);
cout << que.size() << '\n';
returnera 0;

Utgången är 5.

Länkad lista

Kölistan kallas tekniskt en länkad lista. Det finns två typer av länkade listor för kön: enstaka länkad lista och dubbelt länkad lista.

Ett enskilt länkat listelement kan implementeras av en struktur med två medlemmar. En medlem håller en pekare till nästa element och den andra medlem håller datum (singular för data).

Ett dubbelt länkat listelement kan implementeras av en struktur av tre medlemmar. Den mellersta delen har referenspunkten, medan den första och tredje leden håller pekare på sina intilliggande element.

Tillämpningar i kön

Kön är en först-in-först-ut-datastruktur. Det finns situationer vid beräkning när data kommer i form av en kö, vilket kräver först-in-först-ut-beteende.

Dela datorresurser

En resurs i en dator är en fysisk eller virtuell komponent med begränsad tillgänglighet. De inkluderar CPU, grafikkort, hårddisk och minne. Att dela en sådan resurs behöver en kö.

Hantering av avbrott

Datorutrustning måste avbryta datorn då och då. Avbrotten måste hanteras på samma sätt som de anlände. Detta behöver en kö.

Hantera information.

Kön kan till exempel användas för att hantera applikationsfiler för ett jobb om filerna lagras i datorn.

Slutsats

En kö är en listdatastruktur, som antingen är en enstaka länkad lista eller en dubbelt länkad lista. Som regel är det första elementet som kommer in i listan det första elementet som kommer ut. C ++ ger en ködatastruktur i sitt standardbibliotek. Kategorierna av medlemsfunktioner och operatörer som är tillgängliga för denna struktur är kökonstruktion, köelementåtkomst, kökapacitet, kömodifierare och kööverbelastade operatörer.

Alla ködatastrukturer måste innehålla åtminstone medlemsfunktionerna push () och pop (). push () betyder, skickar ett nytt element längst bak i kön; och pop () betyder att ta bort elementet som finns längst fram i kön. Tyvärr, i C ++, returnerar dessa funktioner inte värdet som skjutits eller poppats. Så, för att känna till det sista elementet innan du trycker på, måste extra back () -funktionen användas; och för att känna till det första elementet innan du poppar måste den extra fronten () -funktionen användas.

Ett värde är till en datatyp, som ett instanserat objekt till en klass. Så, en viss klass kan användas som datatyp för kömallens instansiering. Olika objekt för klassen blir som olika värden för klassen.

Kön har applikationer på datorn. Den kan till exempel användas för att hantera applikationsfiler för ett jobb om filerna lagras i datorn.

Chrys

HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...
Hur man använder AutoKey för att automatisera Linux-spel
AutoKey är ett verktyg för desktopautomatisering för Linux och X11, programmerat i Python 3, GTK och Qt. Med hjälp av dess skript och MACRO-funktional...
Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...