Funkcje kolejki priorytetowej C ++

Funkcje kolejki priorytetowej C ++
„Kolejka jest strukturą danych FIFO (pierwsza w, pierwszym wyjściu), wskazując, że wstawienie jest umieszczane na końcu, a usuwanie jest wykonywane z przodu. Konkretna różnorodność kolejek jest kolejką priorytetową. W przeciwieństwie do kolejki, kolejka priorytetowa nie jest zgodna z zasadą FIFO.

Kolejki priorytetowe są formą adaptera kontenera, która jest specjalnie opracowana, tak że zgodnie z pewnymi rygorystycznymi słabymi warunkami sortowania, jego początkowy składnik jest zawsze największym z posiadanych elementów. Ramy te przypomina stos, ponieważ komponenty mogą być dodawane w dowolnym momencie, a tylko maksymalna liczba komponentów sterty można pobrać (pierwszy element na liście priorytetów).

Kolejki priorytetowe są konstruowane jako falowniki pojemnika, które są klasami, które wykorzystują zamkniętą instancję konkretnej kategorii kontenera jako ich rzeczywisty pojemnik i oferują określony zestaw zmiennych i funkcji w celu odzyskania ich komponentów. Najwyższa wartość kolejki priorytetowej lub „tylna” pojemnika to miejsce, w którym komponenty są wypychane."

Jaka jest kolejna priorytetowa w C++?

Pierwszy element w kolejce priorytetowej jest największy ze wszystkich elementów w kolejce, a komponenty są w kolejności malejącej. Kolejka priorytetowa jest formą adaptera pojemnika w C ++, która obsługuje tylko komponent o najwyższym priorytecie.

Porównaj kolejkę z kolejką priorytetową

W kolejce nie ma priorytetu; Natomiast pojemnik kolejki uważa, że ​​element ma najwyższy priorytet. Zasada pierwszej w pierwszej kolejności (FIFO) dotyczy kolejki; Jednak w kolejce priorytetowej komponent o najwyższym priorytecie zostałby najpierw usunięty. Jeśli wiele elementów ma podobny priorytet, kolejność kolejki zostanie użyta w tej sytuacji.

Składnia kolejki priorytetowej

Kolejka priorytetowa w C ++ ma następującą składnię:

Parametry są opisane w następujący sposób:

  • Typ: rodzaj treści lub komponentów, które są przechowywane w kolejce priorytetowej.
  • Pojemnik: Ponieważ kolejka priorytetowa jest adapterem kontenera, jego wykonanie wymaga faktycznego pojemnika. Kontener, który ma zostać wykorzystany do utworzenia kolejki priorytetowej, jest określony przez tę opcję. Wektor domyślnie służy jako standardowy pojemnik.
  • Porównaj: ten parametr jest opcjonalny. Składniki w kolejce priorytetowej są ułożone w kolejce priorytetowej zgodnie z wewnętrznym zamawianiem obiektu. Zachowuje względne pozycje elementów podczas ich porównywania. Możliwa wartość obiektu funkcji to mniej, co daje ten sam wynik, co mniej niż operator.

Kolejka priorytetowa jest skonstruowana domyślnie z maksymalnym heatem w C++.

Składnia kolejki priorytetowej min-heap

Stworzenie składni minimalnej kolejki priorytetowej jest następujące:

Tutaj większa jest klasa porównawcza, a wektor to standardowy kontener biblioteki szablonów.

Korzyści płynące z korzystania z kolejki priorytetowej

Wierzchołki przypisane są, co umożliwia im wznoszenie się w kolejce zamiast upadku na plecy, ponieważ znajdują się w standardowej kolejce.

Wady korzystania z kolejki priorytetowej

Ponieważ musimy również użyć operacji dodawania, aby dodać elementy zgodnie z ich priorytetem, wstawianie nie zajmuje już ustalonej ilości czasu, jak kolejka. Implementacja za pomocą połączonej listy umożliwia utrzymanie spójnego czasu wstawienia.

Metodologie kolejki priorytetowej

Funkcje kolejki priorytetowej C ++ są następujące:

  • Funkcja pusty (): Ta metoda służy do ustalenia, czy pojemnik trzymający kolejkę priorytetową jest pusta, czy nie. Zwróć prawdziwie, jeśli jest pusty; Fałsz inaczej. Nie wymaga żadnych argumentów.
  • Metoda size (): Ta funkcja zwraca liczbę pozycji kolejki priorytetowej. Rozmiar jest zwrócony jako liczba całkowita. Nie wymaga żadnych argumentów.
  • Funkcja push (): element jest dodawany do kolejki, stosując to podejście. Przedmiot jest najpierw dodawany do końca kolejki, a jednocześnie komponenty są zgodne z priorytetem. Podobnie jak w argumencie, akceptuje liczby całkowite.
  • Funkcja pop (): Ta technika usuwa największy komponent z kolejki priorytetowej. Nie wymaga żadnych argumentów.
  • Funkcja top (): Górny składnik z kolejki priorytetowej jest zwracany przez tę funkcję. Nie wymaga żadnych argumentów.
  • Swap () funkcja: Za pomocą tej funkcji kolejka priorytetowa o podobnym rozmiarze i typ. Akceptuje atrybut, którego liczby muszą zostać przełączone, i kolejki priorytetowej.
  • Funkcja emplace (): Przy tym podejściu element danych jest dodawany do pojemnika u góry kolejki. Akceptuje wartość atrybutu.

Wykonajmy wyżej wymienione funkcje w różnych kodach.

Przykład nr 1

W tym przykładzie dodamy element do kolejki priorytetowej. Aby dodać element do kolejki priorytetowej, skorzystamy z funkcji push ().

Wymagane pliki nagłówka i zostaną włączone na początku programu. Wtedy standardowy przestrzeń nazw zostanie dodana jako std. Teraz funkcja main () zostanie wywołana. Kolejka wartości liczb całkowitych zostanie utworzona w następnej kolejności. Ta kolejka będzie kolejką priorytetową. Do tej kolejki priorytetowej zostaną dodane różne wartości. Liczby zostaną wstawione za pomocą funkcji push (). Trzy losowe wartości zostaną dodane przy użyciu metody push. Oświadczenie „cout” zostanie zastosowane do przedstawienia tekstu „elementy kolejki priorytetowej” na konsoli.

Po wyświetleniu tej linii do wydrukowania wartości kolejki „While” zostanie wykorzystana; Wewnątrz pętli „while” zostanie zastosowana funkcja pustej (), aby sprawdzić, czy kolejka jest pusta, czy nie. Metoda pop () zostanie użyta do rozpoczęcia drukowania wartości kolejki w kolejności malejącej. Następnie metoda pop () jest również stosowana do wartości kolejki. „Powrót 0” musi zostać włączony na koniec.

Skonstruowaliśmy kolejkę priorytetową posiadającą liczby całkowite o nazwie Num. Funkcja push () została wykorzystana do dodania różnych wpisów do kolejki: 12, 30 i 72.

Przykład nr 2

W przeciwieństwie do wektorów i innych struktur, nie możemy przejść przez kolejkę priorytetową. Z tego powodu wydrukowaliśmy członków kolejki priorytetowej, używając pętli A white i różnych metod kolejki priorytetowej.

Jest tak, że kolejka priorytetowa będzie działać jak typowa struktura danych kolejki priorytetowej, dlatego jest to adapter kontenera STL o ograniczonym dostępie. W rezultacie drukujemy jego top, zanim okresowo wyskakujemy element wewnątrz pętli, aż kolejka będzie pusta.

Przykład nr 3

W tym przypadku postanowiliśmy wyeliminować element z kolejki priorytetowej. Funkcję pop () można użyć do usuwania komponentu z kolejki priorytetowej. Maksymalna wartość jest eliminowana w tym podejściu.

Rozpoczniemy kod od integracji bibliotek i standardowej przestrzeni nazw. Biblioteki zawierają i . Metoda wyświetlania kolejki priorytetowej zostanie następnie wywołana za pomocą display_priority_queue (). Kolejka zawiera liczby liczb całkowitych, więc „int” będzie dostarczany jako argument funkcji. Po tym wszystkim zostanie wywołana metoda main (). Kolejka zostanie utworzona. Funkcja push () zostanie wykorzystana do dodania różnych wartości w określonej kolejce priorytetowej. Instrukcja „cout” służy do pokazania oryginalnych elementów kolejki priorytetowej.

Wtedy zostanie zastosowana metoda pop (). Ta funkcja eliminuje określoną wartość z kolejki priorytetowej. Teraz instrukcja „cout” zostanie zastosowana do wyświetlania wartości kolejki po usunięciu jednego elementu z kolejki. Polecenie „return 0” -zostanie dodane. Następnie metoda użyteczności zostanie wykorzystana do pokazania określonej kolejki priorytetowej. Pętla „while” zostanie zatrudniona. W ramach pętli „while” zostaną zastosowane metody opróżniające się () i top (). Warunek pętli zostanie zastosowany do funkcji optych (). Metoda pop () zostanie zastosowana do usuwania najwyższej wartości z kolejki priorytetowej.

Tutaj stworzyliśmy kolejkę priorytetową całkowitą nazywaną numerem. Początkowe elementy kolejki priorytetowej to „61, 23, 45.„Najwyższy atrybut został następnie usunięty za pomocą techniki pop (). Tak więc wynik będzie „45, 23."

Przykład nr 4

W tym przypadku funkcja top () zostanie wykorzystana do pobrania maksymalnej wartości kolejki priorytetowej.

Biblioteki i domyślna przestrzeń nazw zostaną zintegrowane, zanim zaczniemy pisać kod. i są dostępne w bibliotekach. Następnie wywołamy funkcję Main (). Następnie powołanoby metodę tworzenia kolejki priorytetowej. Funkcja otrzyma argument „INT”, ponieważ kolejka zawiera tylko liczby liczb całkowitych. Różne wartości zostaną dodane do określonej kolejki priorytetowej za pomocą funkcji push ().

Pop () zostanie użyte po dodaniu elementów do kolejki priorytetowej. Ta funkcja wykazała maksymalną wartość dostarczonej kolejki priorytetowej. Tekst „Górna element kolejki priorytetowej” jest wyświetlany przy użyciu instrukcji Cout. Instrukcję „zwrot 0” można zastosować do zakończenia programu.

Przykład nr 5

W tej ilustracji sprawdzamy, czy kolejka priorytetowa jest pusta, czy nie za pomocą funkcji opty (). Ta metodologia daje:

  • Gdy kolejka priorytetowa nie zawiera pozycji, wartość 1 (prawda)
  • Gdy kolejka priorytetowa zawiera pozycję 0 (false).

Na początku programu wymagane nagłówek i zostaną uwzględnione. Następnie STD zostanie dodane do standardowej przestrzeni nazw. Teraz przywołana zostanie metoda main (). Byłaby utworzona kolejka za pomocą funkcji. Ta metoda przyjmie parametr „ciąg”, ponieważ zawiera wartości z typem danych „String” w tej kolejce. Będzie to miało priorytet. „Czy kolejka zawiera dowolną wartość?”Zostanie wydrukowany za pomocą polecenia„ Cout ”.

Warunek „IF-ELSE” zostałby użyty do ustalenia odpowiedzi. Funkcja pustej () zostanie zastosowana w instrukcji „jeśli”, aby sprawdzić, czy kolejka ma jakieś wartości, czy nie. Jeśli kolejka zawiera jakąkolwiek wartość, wówczas instrukcja „Cout” drukuje „Tak”, inne instrukcje „cout” drukuje „nie” jako wyjście. W rezultacie linia zatytułowana „Pchanie wartości kolejki priorytetowej” jest wyświetlana na ekranie przez instrukcję „Cout”. Kolejka priorytetowa zostanie zaktualizowana o nazwy różnych krajów. Metoda push () byłaby wykorzystywana do wstawienia nazwisk. Technika push doda nazwiska trzech krajów. „Czy kolejka zawiera dowolną wartość?”Zostanie wydrukowany na konsoli za pomocą polecenia„ cout ”.

Warunek „IF-Else” zostanie zastosowany po wyświetleniu tej linii. Metoda pustej () zostanie ponownie użyta, aby potwierdzić, czy kolejka jest pusta, czy nie. Ostatni „powrót 0” musi być obecny.

Aby sprawdzić, czy kolejka priorytetowa kraju jest wypełniona, czy nie, wykorzystaliśmy funkcję pustych (). Kolejka jest pusta na początku. Kraj.pusty () zatem zwraca prawdziwie. Następnie dodaliśmy elementy do kolejki i ponownie wykorzystaliśmy funkcję pusty (). Tym razem daje fałszywe wyniki.

Wniosek

Po pierwsze, zbadaliśmy, jaka jest kolejka priorytetowa w C ++ w tym artykule. Następnie kontrastujemy prostą kolejkę z kolejką priorytetową. Dodatkowo przyjrzeliśmy się składni kolejki priorytetowej, a także jej korzyściom i wadom. Ponadto omówiliśmy różne metody C ++ w kolejkach priorytetowych. Pojemnik zwany kolejką priorytetową służy do przechowywania komponentów z priorytetami. W przeciwieństwie do kolejek, które dodają lub usuwają komponenty zgodnie z zasadą FIFO, elementy w kolejce priorytetowej są usuwane zgodnie z priorytetem. Początkowy komponent usunięty z kolejki będzie miał najwyższy priorytet. Celem kolejki priorytetowej jest zarządzanie komponentami według priorytetu.

W tym artykule zaimplementowano pięć różnych instancji. Po pierwsze, wykorzystaliśmy funkcję push (), aby wstawić elementy do kolejki priorytetowej. Drugi przykład wykorzystuje pętlę „while”, aby pokazać wartości kolejki priorytetowej. W trzecim scenariuszu zastosowaliśmy metodę Pop () do usunięcia maksymalnej wartości z kolejki priorytetowej. Za pomocą funkcji górnej () byliśmy w stanie odzyskać najwyższą wartość w czwartej ilustracji. W ostatnim zastosowaniu metody pustej () w celu ustalenia, czy kolejka priorytetowa była pusta, czy nie.