C++'daki öncelik sırası, STL'de yalnızca en yüksek öncelikli öğeyi dikkate alan türetilmiş bir kapsayıcıdır. Sıra FIFO politikasını takip ederken, öncelik sırası öğeleri önceliğe göre açar; yani en yüksek öncelikli öğe ilk önce açılır.
Belirli yönlerden sıradan kuyruğa benzer ancak aşağıdaki yönlerden farklılık gösterir:
- Öncelik kuyruğunda, kuyruktaki her öğe bir öncelik ile ilişkilendirilir ancak kuyruk veri yapısında öncelik mevcut değildir.
- Öncelik kuyruğunda en yüksek önceliğe sahip olan öğe ilk önce kaldırılır, kuyruk onu takip eder FIFO(İlk Giren İlk Çıkar) politika, ilk eklenen öğenin ilk önce silineceği anlamına gelir.
- Aynı önceliğe sahip birden fazla elemanın mevcut olması durumunda, elemanın kuyruktaki sırası dikkate alınacaktır.
Not: Öncelik kuyruğu normal kuyruğun genişletilmiş versiyonudur ancak en yüksek önceliğe sahip öğe öncelik kuyruğundan ilk olarak kaldırılır.
Öncelik Sırasının Sözdizimi
priority_queue variable_name;
Basit bir örnek üzerinden öncelik sırasını anlayalım.
Yukarıdaki çizimde, öğeleri Push() işlevini kullanarak ekledik ve ekleme işlemi normal kuyrukla aynıdır. Ancak pop() fonksiyonunu kullanarak elemanı kuyruktan sildiğimizde, önceliği en yüksek olan eleman ilk önce silinecektir.
Öncelik Kuyruğunun Üye İşlevi
İşlev | Tanım |
---|---|
itmek() | Öncelik kuyruğuna yeni bir öğe ekler. |
pop() | En yüksek önceliğe sahip olan en üstteki öğeyi kuyruktan kaldırır. |
tepe() | Bu fonksiyon öncelik sırasının en üst elemanını adreslemek için kullanılır. |
boyut() | Öncelik kuyruğunun boyutunu belirler. |
boş() | Kuyruğun boş olup olmadığını kontrol eder. Doğrulamaya bağlı olarak durumu döndürür. |
takas() | Bir öncelik kuyruğunun elemanlarını aynı tür ve boyuta sahip başka bir kuyrukla değiştirir. |
konum() | Öncelik kuyruğunun en üstüne yeni bir öğe ekler. |
Basit bir öncelik sırası programı oluşturalım.
#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>
Öncelik kuyruğunun başka bir örneğini görelim.
#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; }
Yukarıdaki kodda iki öncelik sırası tanımladık, yani p ve q. 'p' öncelik sırasına dört, 'q' öncelik sırasına dört öğe ekledik. Elemanları yerleştirdikten sonra 'p' kuyruğunun elemanlarını swap() fonksiyonunu kullanarak 'q' kuyruğu ile değiştiririz.
Çıktı
Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1
'number>