Hogyan lehet megvalósítani a prioritási várólistát a C ++ verzióban

Ez a cikk részletes és átfogó ismereteket nyújt Önnek a prioritási sorrend megvalósításáról a C ++ nyelven példákkal.

Az elsőbbségi sor egy tároló az STL-ben. Hasonlít a várólistára, kivéve azt a tényt, hogy a prioritási sor minden elemének van bizonyos prioritása, és amikor elemeket dobunk fel a prioritási sorból, akkor a legmagasabb prioritású elemek kerülnek előbb. A prioritási sorhoz hasonlóan 10 különböző típusú tároló van STL . A tároló olyan objektum, amely adatokat tárol. Az STL konténerek sablon osztályok segítségével valósulnak meg, így könnyű testreszabni a különböző típusú adatok tárolására. Ebben a bejegyzésben részletesen megvitatjuk a Prioritási várólistát és a hozzá kapcsolódó fogalmakat. A következő mutatókra a C ++ cikk elsőbbségi sorában kerül sor,



Folytatás ezzel a cikkel a C ++ prioritási soráról



Az STL komponensei

Az STL sablonosztályokból és függvényekből áll, amelyek standard megközelítésként használhatók az adatok tárolására és feldolgozására. Beszéljük meg az STL összetevőit

Konténerek- Az STL-ben 10 típusú tároló van definiálva, és ezek 3 kategóriába vannak csoportosítva. Ebből a 3-ból a prioritási sorok a származtatott tároló kategóriájába tartoznak. Minden tárolóosztály saját funkciókészlettel rendelkezik, amelyek felhasználhatók az adatok manipulálására.



Algoritmus - Az algoritmus a tárolóobjektumban lévő adatok feldolgozására szolgáló módszer. Az STL sokféle algoritmust kínál, amelyek felhasználhatók inicializáláshoz, kereséshez, rendezéshez, egyesítéshez, másoláshoz. Az algoritmusokat sablonfüggvények segítségével valósítják meg.

Iterátor- Az iterátor olyan objektum, amely a tároló egyik elemére mutat. Az iterátorok segíthetnek a tartály tartalmának áthelyezésében. Az iterátorok olyanok, mint a mutatók, amelyeket növelni és csökkenteni lehet. Linkként működik az algoritmus és a tároló között. Az iterátorokat a tárolóban tárolt adatok manipulálására használják.

Folytatás ezzel a cikkel a C ++ prioritási soráról



Halom és elsőbbségi sor

Ahogy korábban láttuk, a Priority Queue a származtatott tárolók kategóriájába tartozik. A kategória további tagjai a verem és a sor. Ezeket a származtatott tartályokat tartályadaptereknek is nevezik.

A verem, a sor és az elsőbbségi sor származtatott tárolóként ismert, mivel különböző szekvencia-tárolókból készülnek. Ezek a tárolók nem támogatnak olyan iterátorokat, amelyeket nem használnak adatkezelésre.

Mi is az a kiemelt sor?

Egyszerű szavakkal, ez egy tároló, amelyet az adatok tárolására használtunk. A tárolt adatok minden elemének van valamilyen prioritása, amely segítségünkre lehet az adatok logikai sorrendben történő tárolásában.
Szintaxis:priority_queue változó_neve

Fontos, hogy egy fejlécfájlt illesszen be a programba a prioritási sor használatához.

elsőbbségi sor c ++ -banPéldául, ha a push függvény segítségével hozzáadunk 2, 10, 30, 5, 6 az elsőbbségi sorunkhoz, majd a pop funkcióval beugrik az elemekre, akkor a kimenet 30, 10, 6, 5, 2 lesz.

Oké, tehát most már tudjuk a prioritási sor célját vagy használatát. De honnan tudta, hogy 30> 10? Valamilyen válogatást végez? Ezen a ponton halmok jönnek a képbe. A halmok részletes ismertetéséhez olvassa el ezt a cikket.

Kupacok - A kupacok faszerű szerkezetek. Annak alapján, hogy a gyermekelem-csomópontok miként vannak elrendezve egy kupacban a szülőcsomópontokhoz viszonyítva, a halmokat 2 részre osztják

pass by value vs pass by referencia java

egy. Min Heap- Min Heap esetén a szülőcsomópont értéke kisebb vagy egyenlő a gyermekcsomópontok értékével.

2. Max Heap- Max Heap esetén a szülőcsomópont értéke nagyobb vagy egyenlő a gyermekcsomópontok értékével.

Jegyzet- A prioritási sor nem rendezi az elemeket valamilyen rendezési algoritmus segítségével, hanem halom formájában tárolta az adatokat.

Folytatás ezzel a cikkel a C ++ prioritási soráról

A prioritási sor összes elemének kinyomtatása

Miután megértettük a prioritási sor alapjait, hajtsunk végre programokat annak érdekében, hogy megértsük a leggyakrabban használt módszereket prioritásos várólistával

#include #include névtér használatával st int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) while (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Kimenet:

30 15 10 9 6 2

hogyan csatolja a java-t

A fenti programban a pop (), a top () és a push () függvényeket használtuk, amelyeket a legtöbbször használnak, miközben prioritási sorral foglalkozunk. Vessünk egy pillantást néhány olyan módszerre, amelyet elsőbbségi sorban használhatunk

méret (): Ez a függvény adja vissza a Prioritási sor méretét

üres (): Ezzel a funkcióval ellenőrizhető, hogy az elsőbbségi sor üres-e vagy sem. Igaz értéket ad vissza, ha a prioritási sor üres.

nyom( ): Beilleszt egy elemet a Prioritási sorba.

pop (): Ez a függvény eltávolítja a prioritási sor legfelső elemét, amely a legmagasabb prioritású elem.

csere (): Ez a függvény felcseréli a prioritási sor elemeit egy másik prioritási sorral. A funkció paraméterként prioritási várólistát vesz fel.

munkahely (): Ez a függvény egy elem hozzáadására szolgál a prioritási sor tetejére.

Nézzünk még egy programot.

#include #include névtér használatával st int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) while (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Kimenet:

2 6 7 9 10 15 30

Ezzel a C ++ cikkben a Priority Queue végére értünk. Ha többet szeretne megtudni, nézze meg a Edureka, egy megbízható online tanulási társaság. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát arra tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókra kiképezzen különféle Java keretrendszereket, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.