Hur man använder C ++ kö

How Use C Queue



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 objektet som ska tas bort nästa. Så när föremål läggs till i samlingen växer den i storlek, det vill säga den växer i längd. När 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 borttagna det andra objektet; den tredje tas bort efteråt, och så vidare.

Efter att det första objektet i den ursprungliga listan har tagits bort blir det andra det första objektet. Efter att det andra objektet har tagits bort blir det tredje det första objektet och så vidare.







Ett bra verkligt exempel på en kö är när folk ställer upp för att vänta på service eller bra. Den första personen serveras först före den sista. Men kön som vi talade om i den här självstudien är programvarukön, enligt utformningen 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är borttagning ska ske. Början av listan kallas huvud eller framsida; slutet av listan kallas rygg eller svans.



Viktiga operationer

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





skjuta på

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



flytta

Denna operation 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 ++ -datastrukturen. 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 vara att instantiera objektet.

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 klassens namn. Objekt som skapats (instanserats) från klassen har olika namn som programmeraren har gett dem.

Att skapa ett objekt från klassen innebär att konstruera objektet; det betyder också att instiniera.

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

#omfatta
#omfatta
med namnutrymme std;

Den första raden är för input/output. Den andra raden är att låta programmet använda alla funktioner i köklassen. Den tredje raden gör att programmet kan använda namnen i standardnamnutrymmet.

Ö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 utförs.

Konstruktion

<typ>namn()

Följande deklaration ger en kö med namnet, que av typen int.

<int>den där;

Kön är tom. Deklarationen börjar med det reserverade ordet, kö följt av vinkelparenteser med datatypen. Sedan har du programmerarens förnamn för kön.

Konstruerar med Initializer List

Följande definition visar hur du skapar en kö med initieringslista:

<flyta>den där({1.1, 2.2, 3.3, 4.4});

Förstör en kö

För att förstöra en kö, låt den gå utanför tillämpningsområdet.

Åtkomst till köelement

push (värde)

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

<flyta>den där;

den där.skjuta på(1.1);
den där.skjuta på(2.2);
den där.skjuta på(3.3);
den där.skjuta på(4.4);
den där.skjuta på(5.5);

storlek () konst

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

<flyta>den där;
den där.skjuta på(1.1);den där.skjuta på(2.2);den där.skjuta på(3.3);den där.skjuta på(4.4);den där.skjuta på(5.5);
kosta<<den där.storlek() << ' n';

Utgången är 5.

främre()

Detta returnerar en referens till det första elementet i kön utan att elementet tas bort. Utmatningen av följande kod är 1.1.

<flyta>den där;
den där.skjuta på(1.1);den där.skjuta på(2.2);den där.skjuta på(3.3);den där.skjuta på(4.4);den där.skjuta på(5.5);
kosta<<den där.främre() << ' n';

Elementet tas inte bort från kön.

fram () konst

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

konst<flyta>den där({1.1, 2.2, 3.3, 4.4, 5.5});
kosta<<den där.främre() << ' 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 elementet tas bort. Utdata från följande kod är 5.5.

<flyta>den där;
den där.skjuta på(1.1);den där.skjuta på(2.2);den där.skjuta på(3.3);den där.skjuta på(4.4);den där.skjuta på(5.5);
kosta<<den där.tillbaka() << ' n';

tillbaka () konst

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

konst<flyta>den där({1.1, 2.2, 3.3, 4.4, 5.5});
kosta<<den där.tillbaka() << ' n';

En konstant referens returneras. Elementet tas inte bort från kön. Med föregående konst för kökonstruktionen kan elementen i kön inte ä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:

<flyta>att1({1.1, 2.2, 3.3, 4.4, 5.5});
kosta<<att1.tömma() << ' n';
<flyta>att2;
kosta<<att2.tömma() << ' 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:

<flyta>den där({1.1, 2.2, 3.3, 4.4, 5.5});
kosta<<den där.främre() << ' n';
den där.pop-();
kosta<<den där.storlek() << ' n';

Utgången är:

1.1
4

a. byta (b)

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

<flyta>att1({1.1, 2.2, 3.3, 4.4, 5.5});
<flyta>att2({10, tjugo});
att1.byta(att2);
kosta<< 'Första elementet och storleken på que1:
'
<<att1.främre() <<','<<att1.storlek() << ' n';
kosta<< 'Första elementet och storleken på que2'<<
att2.främre() <<','<<att2.storlek() << ' 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ö ökar vid behov. Värden som inte hade ersättningar 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 siffror före stora bokstäver, som kommer före gemener. 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 det 0. Exempel:

<konst röding*>att1({'snäll', 'något annat'});
<konst röding*>att2({'ond'});
intpå ett=att1==att2;
kosta<<på ett<< ' n';

Utgången är: 0.

! = Operatören

- motsatsen till ovanstående. Exempel:

<konst röding*>att1({'snäll', 'något annat'});
<konst röding*>att2({'ond'});
intpå ett=att1! =att2;
kosta<<på ett<< ' n';

Utgången är: 1.

Relationsoperatörer

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

De

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 stora delarna samma 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å returneras 1 fortfarande. Annars returneras 0. Exempel:

<konst röding*>att1({'snäll', 'något annat'});
<konst röding*>att2({'ond'});
intpå ett=att1<att2;
kosta<<på ett<< ' n';

Utgången är 1.

> Operatören

- motsatsen till ovanstående. Exempel:

<konst röding*>att1({'snäll', 'något annat'});
<konst röding*>att2({'ond'});
intpå ett=att1>att2;
kosta<<på ett<< ' n';

Utgång: 0

De<= Operator

- samma som <konst röding*>att1({'snäll', 'något annat'});
<konst röding*>att2({'ond'});
intpå ett=att1<=att2;
kosta<<på ett<< ' n';

Utgång: 1

> = Operatören

- motsatsen till ovanstående. Exempel:

<konst röding*>att1({'snäll', 'något annat'});
<konst röding*>att2({'ond'});
intpå ett=att1> =att2;
kosta<<på ett<< ' n';

Utgång: 0

Class och dess Instantiated Objects

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

#omfatta
#omfatta
med namnutrymme std;
klass TheCla
{
offentlig:
intpå ett;
statisk rödingkap;
tomhetfungera(rödingNej, konst röding *sid)
{
kosta<< 'Det finns ' <<på ett<< 'värda böcker' <<Nej<<sid<< ' i affären.' << ' n';
}
statisk tomhetroligt(rödingkap)
{
om (kap== 'till')
kosta<< 'Officiell statisk medlemsfunktion' << ' n';
}
};
inthuvud()
{
TheCla obj1;TheCla obj2;TheCla obj3;TheCla obj4;TheCla obj5;
<TheCla>den där;
den där.skjuta på(obj1);den där.skjuta på(obj2);den där.skjuta på(obj3);den där.skjuta på(obj4);den där.skjuta på(obj5);
kosta<<den där.storlek() << ' n';
lämna tillbaka 0;
}

Utgången är 5.

Länkad lista

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

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

Ett dubbellänkat listelement kan implementeras av en struktur bestående av tre medlemmar. Den mellersta delen håller datumet, medan den första och tredje delen håller pekare till sina intilliggande element.

Köns applikationer

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

Dela datorresurser

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

Hanteringsavbrott

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

Hantera information.

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

Slutsats

En kö är en listdatastruktur, som antingen är en enskilt länkad lista eller en dubbel länkad lista. Som regel är det första elementet som kommer in i listan det första elementet som kommer ut. C ++ tillhandahåller 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.

Varje ködatastruktur måste tillhandahålla åtminstone push () och pop () medlemsfunktioner. push () betyder att skicka ett nytt element längst bak i kön; och pop () betyder att ta bort elementet som ligger längst fram i kön. Tyvärr i C ++ returnerar dessa funktioner inte värdet som tryckts eller poppades. Så, för att känna till det sista elementet innan du trycker på, måste funktionen extra back () 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 en datatyp, som ett instanserat objekt är för en klass. Så en viss klass kan användas som en datatyp för kömallen. Olika objekt för klassen blir som olika värden för klassen.

Kön har applikationer på datorn. Det kan till exempel användas för att hantera programfiler för ett jobb, om filerna är lagrade i datorn.

Chrys