Prioritātes rinda C++ ir atvasināts konteiners STL, kas ņem vērā tikai augstākās prioritātes elementu. Rinda ievēro FIFO politiku, savukārt prioritārā rinda uznirst elementus, pamatojoties uz prioritāti, t.i., vispirms tiek parādīts augstākās prioritātes elements.
Dažos aspektos tā ir līdzīga parastajai rindai, taču atšķiras šādos veidos:
- Prioritātes rindā katrs rindas elements ir saistīts ar kādu prioritāti, bet rindas datu struktūrā prioritāte nepastāv.
- Elements ar visaugstāko prioritāti prioritārajā rindā tiks noņemts vispirms, bet rinda sekos FIFO (First-In-First-Out) politika nozīmē, ka vispirms tiks dzēsts elements, kas ievietots pirmais.
- Ja pastāv vairāki elementi ar vienu un to pašu prioritāti, tiks ņemta vērā elementa secība rindā.
Piezīme. Prioritātes rinda ir parastās rindas paplašinātā versija, izņemot to, ka elements ar augstāko prioritāti vispirms tiks noņemts no prioritārās rindas.
Prioritātes rindas sintakse
priority_queue variable_name;
Izpratīsim prioritāro rindu, izmantojot vienkāršu piemēru.
Iepriekš redzamajā ilustrācijā elementi ir ievietoti, izmantojot funkciju push (), un ievietošanas darbība ir identiska parastajai rindai. Bet, kad mēs izdzēšam elementu no rindas, izmantojot pop() funkciju, vispirms tiks izdzēsts elements ar augstāko prioritāti.
Prioritātes rindas dalībnieka funkcija
Funkcija | Apraksts |
---|---|
push () | Tas ievieto jaunu elementu prioritārajā rindā. |
pop () | Tas noņem no rindas augšējo elementu, kuram ir augstākā prioritāte. |
tops() | Šī funkcija tiek izmantota, lai risinātu prioritārās rindas augstāko elementu. |
Izmērs() | Tas nosaka prioritārās rindas lielumu. |
tukšs () | Tas pārbauda, vai rinda ir tukša. Pamatojoties uz verifikāciju, tas atgriež statusu. |
apmainīt () | Tas apmaina prioritārās rindas elementus ar citu rindu, kurai ir tāds pats veids un izmērs. |
atrašanās vieta () | Tas ievieto jaunu elementu prioritārās rindas augšpusē. |
Izveidosim vienkāršu prioritārās rindas programmu.
#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<<'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 'p' :3 30 20 10 zzzzz/ </pre> <p> <strong>Let'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 '1' in p. p.push(2); // inserting element '2' in p. p.push(3); // inserting element '3' in p. p.push(4); // inserting element '4' in p. q.push(5); // inserting element '5' in q. q.push(6); // inserting element '6' in q. q.push(7); // inserting element '7' in q. q.push(8); // inserting element '8' in q. p.swap(q); std::cout << 'Elements of p are : ' << std::endl; while(!p.empty()) { std::cout << p.top() << std::endl; p.pop(); } std::cout << 'Elements of q are :' << std::endl; while(!q.empty()) { std::cout << q.top() << 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 'p' priority queue and four in 'q' priority queue. After inserting the elements, we swap the elements of 'p' queue with 'q' 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>
Apskatīsim vēl vienu prioritārās rindas piemēru.
#include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element '1' in p. p.push(2); // inserting element '2' in p. p.push(3); // inserting element '3' in p. p.push(4); // inserting element '4' in p. q.push(5); // inserting element '5' in q. q.push(6); // inserting element '6' in q. q.push(7); // inserting element '7' in q. q.push(8); // inserting element '8' in q. p.swap(q); std::cout << 'Elements of p are : ' << std::endl; while(!p.empty()) { std::cout << p.top() << std::endl; p.pop(); } std::cout << 'Elements of q are :' << std::endl; while(!q.empty()) { std::cout << q.top() << std::endl; q.pop(); } return 0; }
Iepriekš minētajā kodā mēs esam deklarējuši divas prioritāras rindas, t.i., p un q. Mēs ievietojām četrus elementus “p” prioritātes rindā un četrus “q” prioritātes rindā. Pēc elementu ievietošanas mēs apmainām rindas 'p' elementus ar rindu 'q', izmantojot funkciju swap().
Izvade
Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1
'number>