Как да внедрим приоритетна опашка в C ++



Тази статия ще ви предостави подробни и изчерпателни знания за това как да приложите априорна опашка в C ++ с примери.

Приоритетна опашка е контейнер в STL. Подобно е на опашката, с изключение на факта, че всеки елемент от опашката с приоритет има определен приоритет и когато изскачаме елементи от опашката с приоритет, елементите с най-висок приоритет се изскачат първи. Подобно на опашката с приоритет, тук има 10 различни типа контейнери STL . Контейнерът е обект, който съхранява данни. Контейнерите STL се реализират с помощта на класове на шаблони, поради което е лесно да го персонализирате, за да съхранява различни видове данни. В тази публикация ще обсъдим в детайли приоритетната опашка и свързаните с нея концепции. Следните указатели ще бъдат обхванати в тази приоритетна опашка в C ++ статия,

Продължавайки с тази статия за приоритетна опашка в C ++





Компоненти на STL

STL се състои от класове шаблони и функции, които могат да се използват като стандартен подход за съхранение и обработка на данни. Нека обсъдим компонентите на STL

Контейнери- Има 10 вида контейнери, дефинирани в STL и те са групирани в 3 категории. От тези 3, приоритетните опашки принадлежи към категорията на производния контейнер. Всеки клас контейнер има свой собствен набор от функции, които могат да се използват за манипулиране на данните.



Алгоритъм - Алгоритъмът е метод, използван за обработка на данните, присъстващи в обекта на контейнера. STL предоставя много различни видове алгоритми, които могат да се използват при инициализиране, търсене, сортиране, обединяване, копиране. Алгоритмите се реализират с помощта на шаблонни функции.

Итератор- Итераторът е обект, който сочи към елемент в контейнера. Итераторите могат да ви помогнат да се придвижвате през съдържанието на контейнер. Итераторите са като указатели, които могат да се увеличават и намаляват. Той действа като връзка между алгоритъма и контейнера. Итераторите се използват за манипулиране на данните, съхранявани в контейнер.

Продължавайки с тази статия за приоритетна опашка в C ++



Купчини и опашка с приоритет

Както видяхме по-рано, Priority Queue принадлежи към категорията производни контейнери. Други членове на тази категория са стек и опашка. Тези производни контейнери са известни още като адаптери за контейнери.

Опашката на стека, опашката и приоритета са известни като производни контейнери, тъй като са направени от различни контейнери за последователност. Тези контейнери не поддържат никакъв тип итератори, те не се използват за манипулиране на данни.

Какво точно е приоритетна опашка?

С прости думи, това е контейнер, който използвахме за съхраняване на данни. На всеки елемент от съхранените данни се дава някакъв приоритет, който може да ни помогне при съхраняването на данни в логичен ред.
Синтаксис:приоритет_черта име_променлива

Важно е да включите заглавен файл в програмата, за да използвате приоритетна опашка.

приоритетна опашка в c ++Например, ако добавим 2, 10, 30, 5, 6 в нашата приоритетна опашка, използвайки функция push и след това изскачаме елементите, използвайки функцията pop, изходът ще бъде 30, 10, 6, 5, 2.

Добре, така че сега знаем целта или използването на приоритетна опашка. Но как разбра дали 30> 10? Прави ли някакво сортиране? В този момент купчините влизат в картината. За да научите подробно за купчините, вижте тази статия.

Купчините - купчини са дървовидни структури. Въз основа на начина, по който възлите на дъщерните елементи са подредени в куп по отношение на родителските възли, купчините се подразделят на 2 части

какво прави скенерът в java

един. Мин купчина В Min Heap стойността на родителския възел е по-малка или равна на стойността на дъщерните възли.

2. Max Heap- В Max Heap стойността на родителския възел е по-голяма или равна на стойността на дъщерните възли.

Забележка- Опашката за приоритет не сортира елементите, използвайки някакъв алгоритъм за сортиране, вместо това тя съхранява данните под формата на купчина.

Продължавайки с тази статия за приоритетна опашка в C ++

Отпечатване на всички елементи на опашка с приоритет

След като разберем основите на приоритетната опашка, нека внедрим програми, за да разберем най-често използваните методи с приоритетна опашка

#include #include using space names 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) докато (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Изход:

30 15 10 9 6 2

php mysql_fetch_

В горната програма използвахме функциите pop (), top () и push (), които се използват през повечето време, докато се занимаваме с приоритетна опашка. Нека да разгледаме някои от методите, които можем да използваме с опашка с приоритет

размер (): Тази функция връща размера на приоритетната опашка

празен (): Тази функция се използва за проверка дали приоритетната опашка е празна или не. Той връща true за приоритетната опашка е празна.

push (): Вмъква елемент в приоритетната опашка.

поп (): Тази функция премахва най-горния елемент на опашката с приоритет, който е елементът с най-висок приоритет.

размяна( ): Тази функция разменя елементите на приоритетната опашка с друга приоритетна опашка. Функцията приема приоритетна опашка като параметър.

emplace (): Тази функция се използва за добавяне на елемент в горната част на опашката с приоритет.

Нека разгледаме още една програма.

#include #include using space names 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) докато (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Изход:

2 6 7 9 10 15 30

С това стигнахме до края на тази приоритетна опашка в статията на C ++. Ако искате да научите повече, разгледайте от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.