logo

Приоритетни ред у Ц++

Приоритетни ред у Ц++ је изведени контејнер у СТЛ-у који разматра само елемент највишег приоритета. Ред прати ФИФО политику док приоритетни ред избацује елементе на основу приоритета, тј. први се искаче елемент највишег приоритета.

У одређеним аспектима је сличан обичном реду, али се разликује на следеће начине:

  • У реду приоритета, сваки елемент у реду је повезан са неким приоритетом, али приоритет не постоји у структури података реда.
  • Елемент са највишим приоритетом у приоритетном реду ће бити уклоњен први док ред следи ФИФО (први-први-први-изишао) политика значи да ће елемент који је први уметнут бити први обрисан.
  • Ако постоји више од једног елемента са истим приоритетом, онда ће се у обзир узети редослед елемента у реду.

Напомена: Приоритетни ред је проширена верзија нормалног реда, осим што ће елемент са највишим приоритетом бити први уклоњен из реда приоритета.

Синтакса приоритетног реда

 priority_queue variable_name; 

Хајде да разумемо приоритетни ред кроз једноставан пример.

Приоритетни ред у Ц++

На горњој илустрацији, убацили смо елементе помоћу функције пусх(), а операција уметања је идентична нормалном реду чекања. Али када избришемо елемент из реда помоћу функције поп(), тада ће први бити обрисан елемент са највишим приоритетом.

Функција члана приоритетног реда

Функција Опис
пусх() Умеће нови елемент у приоритетни ред.
поп() Уклања горњи елемент из реда, који има највећи приоритет.
врх() Ова функција се користи за адресирање највишег елемента приоритетног реда.
величина() Он одређује величину приоритетног реда.
празно() Проверава да ли је ред празан или не. На основу верификације, враћа статус.
свап() Он мења елементе приоритетног реда са другим редом истог типа и величине.
локација() Умеће нови елемент на врх приоритетног реда.

Хајде да направимо једноставан програм приоритетног реда.

 #include #include using namespace std; int main() { priority_queue p; // variable declaration. p.push(10); // inserting 10 in a queue, top=10 p.push(30); // inserting 30 in a queue, top=30 p.push(20); // inserting 20 in a queue, top=20 cout&lt;<'number of elements available in 'p' :'<<p>In the above code, we have created a priority queue in which we insert three elements, i.e., 10, 30, 20. After inserting the elements, we display all the elements of a priority queue by using a while loop.<p></p> <p> <strong>Output</strong> </p> <pre> Number of elements available in &apos;p&apos; :3 30 20 10 zzzzz/ </pre> <p> <strong>Let&apos;s see another example of a priority queue.</strong> </p> <pre> #include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; std::endl; q.pop(); } return 0; } </pre> <p>In the above code, we have declared two priority queues, i.e., p and q. We inserted four elements in &apos;p&apos; priority queue and four in &apos;q&apos; priority queue. After inserting the elements, we swap the elements of &apos;p&apos; queue with &apos;q&apos; queue by using a swap() function.</p> <p> <strong>Output</strong> </p> <pre> Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1 </pre> <hr></'number>

Хајде да видимо још један пример приоритетног реда.

 #include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; std::endl; q.pop(); } return 0; } 

У горњем коду смо декларисали два приоритетна реда, односно, п и к. Убацили смо четири елемента у ред приоритета 'п' и четири у ред приоритета 'к'. Након уметања елемената, мењамо елементе 'п' реда са 'к' редом користећи функцију свап().

Излаз

 Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1