Jak implementovat prioritní frontu v C ++



Tento článek vám poskytne podrobné a komplexní znalosti o tom, jak implementovat frontu priorit v C ++ s příklady.

Prioritní fronta je kontejner v STL. Je to podobné jako ve frontě, s výjimkou skutečnosti, že každý prvek prioritní fronty má určitou prioritu a když vyskakujeme prvky z prioritní fronty, jsou nejprve vyskakovány prvky s nejvyšší prioritou. Stejně jako prioritní fronta existuje 10 různých typů kontejnerů STL . Kontejner je objekt, který ukládá data. Kontejnery STL jsou implementovány pomocí tříd šablon, takže jeho přizpůsobení tak, aby obsahovalo různé typy dat, je snadné. V tomto příspěvku budeme podrobně diskutovat o prioritní frontě a konceptech s ní souvisejících. Následující ukazatele budou popsány v této prioritní frontě v článku C ++,

Pokračujeme tímto článkem o prioritní frontě v C ++





Součásti STL

STL se skládá z tříd šablon a funkcí, které lze použít jako standardní přístup k ukládání a zpracování dat. Pojďme diskutovat o komponentách STL

Kontejnery- V STL je definováno 10 typů kontejnerů, které jsou seskupeny do 3 kategorií. Z těchto 3 prioritních front patří do kategorie odvozeného kontejneru. Každá třída kontejneru má vlastní sadu funkcí, které lze použít k manipulaci s daty.



Algoritmus - Algoritmus je metoda používaná ke zpracování dat přítomných v objektu kontejneru. STL poskytuje mnoho různých typů algoritmů, které lze použít při inicializaci, vyhledávání, třídění, slučování, kopírování. Algoritmy jsou implementovány pomocí funkcí šablon.

Iterátor - Iterátor je objekt, který směřuje k prvku v kontejneru. Iterátoři mohou pomoci při procházení obsahu kontejneru. Iterátory jsou jako ukazatele, které lze zvyšovat a snižovat. Funguje jako spojení mezi algoritmem a kontejnerem. Iterátory se používají pro manipulaci s daty uloženými v kontejneru.

Pokračujeme tímto článkem o prioritní frontě v C ++



Hromady a prioritní fronta

Jak jsme viděli dříve, prioritní fronta patří do kategorie odvozených kontejnerů. Dalšími členy této kategorie jsou zásobník a fronta. Tyto odvozené kontejnery jsou také známé jako adaptéry kontejnerů.

Zásobník, fronta a prioritní fronta jsou známé jako odvozené kontejnery, protože jsou vyrobeny z různých kontejnerů sekvence. Tyto kontejnery nepodporují žádný typ iterátorů, které se nepoužívají pro manipulaci s daty.

řetězec k převodu data v java

Co přesně je prioritní fronta?

Jednoduše řečeno, jedná se o kontejner, který jsme použili k ukládání dat. Každému prvku uložených dat je přiřazena určitá priorita, která nám může pomoci při ukládání dat v logickém pořadí.
Syntax:priority_queue variable_name

Pro použití prioritní fronty je důležité do programu zahrnout hlavičkový soubor.

prioritní fronta v C ++Například pokud přidáme 2, 10, 30, 5, 6 do naší prioritní fronty pomocí funkce push a potom pop prvky pomocí funkce pop, výstup bude 30, 10, 6, 5, 2.

Dobře, takže teď známe účel nebo použití prioritní fronty. Ale jak to víte, když 30> 10? Dělá to nějaké třídění? V tomto bodě přicházejí na scénu hromady. Další informace o hromadách najdete v tomto článku.

Hromady - Hromady jsou struktury podobné stromům. Na základě toho, jak jsou uzly podřízených prvků uspořádány v hromadě vzhledem k nadřazeným uzlům, jsou hromady rozděleny na 2 části

jeden. Min. Halda V Min haldě je hodnota nadřazeného uzlu menší nebo rovna hodnotě podřízených uzlů.

2. Max. Halda V Max haldě je hodnota nadřazeného uzlu větší nebo rovna hodnotě podřízených uzlů.

Poznámka- Prioritní fronta netřídí prvky pomocí nějakého třídicího algoritmu, místo toho ukládá data ve formě haldy.

Pokračujeme tímto článkem o prioritní frontě v C ++

Tisk všech prvků prioritní fronty

Po pochopení základů prioritní fronty implementujme programy k porozumění nejčastěji používaných metod s prioritní frontou

#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ýstup:

30 15 10 9 6 2

Ve výše uvedeném programu jsme použili funkce pop (), top () a push (), které se nejčastěji používají při řešení prioritní fronty. Podívejme se na některé z metod, které můžeme použít u prioritní fronty

velikost (): Tato funkce Vrátí velikost prioritní fronty

prázdný (): Tato funkce se používá ke kontrole, zda je prioritní fronta prázdná nebo ne. Vrací true prioritní fronty je prázdná.

tlačit( ): Vloží prvek do fronty priorit.

pop (): Tato funkce odebere horní prvek prioritní fronty, což je prvek s nejvyšší prioritou.

vysvětlit mvc architekturu v Javě s příkladem

swap (): Tato funkce zamění prvky prioritní fronty s jinou prioritní frontou. Funkce přebírá jako parametr prioritní frontu.

emplace (): Tato funkce slouží k přidání prvku na začátek fronty priorit.

Podívejme se ještě 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ýstup:

2 6 7 9 10 15 30

S tímto se dostáváme na konec této prioritní fronty v článku C ++. Pokud se chcete dozvědět více, podívejte se na Edureka, důvěryhodná online vzdělávací společnost. Výcvikový a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java spolu s různými rámci Java jako Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.