Ako implementovať prioritný front v C ++



Tento článok vám poskytne podrobné a komplexné vedomosti o tom, ako implementovať front priorít v C ++ s príkladmi.

Prioritným frontom je kontajner v STL. Je to podobné ako vo fronte, okrem toho, že každý prvok prioritného frontu má určitú prioritu a keď vysunieme prvky z prioritného frontu, najskôr sa vyskočia prvky s najvyššou prioritou. Rovnako ako prioritný front je aj 10 rôznych typov kontajnerov STL . Kontajner je objekt, ktorý ukladá údaje. Kontajnery STL sa implementujú pomocou šablónových tried, a preto je jeho prispôsobenie na uchovávanie rôznych typov údajov jednoduché. V tomto príspevku si podrobne rozoberieme prioritný front a koncepty s ním spojené. Nasledujúce ukazovatele budú obsiahnuté v tomto článku o prioritných radoch v C ++,

Pokračujeme týmto článkom o prioritnej fronte v C ++





Komponenty STL

STL pozostáva z tried šablón a funkcií, ktoré je možné použiť ako štandardný prístup k ukladaniu a spracovaniu údajov. Poďme diskutovať o komponentoch STL

Kontajnery V STL je definovaných 10 typov kontajnerov, ktoré sú zoskupené do 3 kategórií. Z týchto 3 prioritných front patrí do kategórie odvodeného kontajnera. Každá trieda kontajnera má svoju vlastnú sadu funkcií, pomocou ktorých je možné manipulovať s údajmi.



Algoritmus - Algoritmus je metóda používaná na spracovanie údajov prítomných v objekte kontajnera. STL poskytuje mnoho rôznych typov algoritmov, ktoré možno použiť pri inicializácii, vyhľadávaní, triedení, zlučovaní a kopírovaní. Algoritmy sa implementujú pomocou funkcií šablón.

Iterátor- Iterátor je objekt, ktorý smeruje k prvku v kontajneri. Iterátory môžu pomôcť pri prechádzaní obsahom nádoby. Iterátory sú ako ukazovatele, ktoré je možné zvyšovať a znižovať. Funguje ako prepojenie medzi algoritmom a kontajnerom. Iterátory sa používajú na manipuláciu s údajmi uloženými v kontajneri.

Pokračujeme týmto článkom o prioritnej fronte v C ++



Haldy a prioritné fronty

Ako sme už videli, prioritná fronta patrí do kategórie odvodených kontajnerov. Ďalšími členmi tejto kategórie sú zásobníky a fronty. Tieto odvodené kontajnery sú tiež známe ako adaptéry kontajnerov.

Zásobník, front a prioritný front sú známe ako odvodené kontajnery, pretože sú vyrobené z rôznych kontajnerov sekvencií. Tieto kontajnery nepodporujú žiadny typ iterátorov, ktoré sa nepoužívajú na manipuláciu s údajmi.

rámec riadený kľúčovými slovami v seléne

Čo je to vlastne prioritný rad?

Jednoducho povedané, je to kontajner, ktorý sme používali na ukladanie údajov. Každému prvku uložených údajov je priradená určitá priorita, ktorá nám môže pomôcť pri ukladaní údajov v logickom poradí.
Syntax:priority_queue variable_name

Je dôležité zahrnúť do programu hlavičkový súbor, aby ste mohli použiť prioritný front.

prioritný rad v c ++Napríklad, ak do našej prioritnej fronty pridáme 2, 10, 30, 5, 6 pomocou funkcie push a potom elementy vysunieme pomocou funkcie pop, výstup bude 30, 10, 6, 5, 2.

Dobre, takže teraz poznáme účel alebo použitie prioritného frontu. Ako to však bolo možné zistiť, keď 30> 10? Robí to nejaké triedenie? V tomto okamihu prichádzajú na rad hromady. Ak sa chcete dozvedieť podrobnejšie o hromadách, prečítajte si tento článok.

Haldy - Haldy sú štruktúry podobné stromom. Na základe toho, ako sú uzly podradených prvkov usporiadané v halde vzhľadom na nadradené uzly, sa hromady rozdelia na 2 časti

jeden. Min. Halda V Min halde je hodnota nadradeného uzla menšia alebo rovnaká ako hodnota podradených uzlov.

2. Max. Halda V Max halde je hodnota nadradeného uzla väčšia alebo rovná hodnote podradených uzlov.

Poznámka- Prioritná fronta netriedi prvky pomocou nejakého algoritmu triedenia, ale ukladá údaje vo forme haldy.

Pokračujeme týmto článkom o prioritnej fronte v C ++

Tlač všetkých prvkov prioritného frontu

Po pochopení základov prioritného frontu implementujme programy na pochopenie najbežnejšie používaných metód s prioritným frontom.

#include #include using namespace std 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 }

Výkon:

30 15 10 9 6 2

Vo vyššie uvedenom programe sme použili funkcie pop (), top () a push (), ktoré sa väčšinou používajú pri riešení frontu priorít. Pozrime sa na niektoré z metód, ktoré môžeme použiť v prioritnom rade

veľkosť (): Táto funkcia Vráti veľkosť prioritného frontu

prázdne (): Táto funkcia sa používa na kontrolu, či je prioritný front prázdny alebo nie. Vráti hodnotu true z toho, že prioritný front je prázdny.

tlačiť( ): Vloží prvok do prioritného frontu.

pop (): Táto funkcia odstráni vrchný prvok fronty priorít, ktorý je prvkom s najvyššou prioritou.

prepojený zoznam v c návode

swap (): Táto funkcia zamení prvky prioritného frontu s iným prioritným frontom. Funkcia prevezme ako parameter prioritný rad.

emplace (): Táto funkcia slúžila na pridanie prvku na začiatok prioritného frontu.

Pozrime sa ešte na jeden program.

#include #include using namespace std 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 }

Výkon:

2 6 7 9 10 15 30

Týmto sa dostávame na koniec tohto prioritného frontu v článku C ++. Ak sa chcete dozvedieť viac, pozrite si Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil na základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.