Priority queue
RNO-Wiki
Priority_queue (czyt. "kiu") to implementacja kopca w STL-u (bibliotece standardowej C++). Obsługuje ona standardowe polecenia o jakich mówimy przy kopcu, czyli
- insert - wstawianie do kopca w priority_queue nazwana push
- maximum - zwraca największy element w priority_queue nazwane top
- extract-max - usuwa największy element z kopca w STL-u nazwane pop. Uwaga: ta funkcja nie zwraca wartości maximum - jest typu void
- build-max-heap - buduje kopiec z tablicy - w STL-u jest to konstruktor, któremu podajemy iteratory wskazujące na początek i koniec (tak jak w funkcji sort)
Poniżej przykład korzystania z priority_queue
#include<iostream> #include<queue> using namespace std; int main() { int A[] = {10, 8, 23, 9, 34, 23, 42, 32, 54, 90, 57, 54, 12, 13, 21, 31}; int n = sizeof( A) / sizeof( int); //w ten sposób uzyskujemy ilość elementów w tablicy int x; priority_queue<int> kopiec(A, A + n); // budujemy kopiec z tablicy cout << kopiec.top() << endl; //wypisuje element z góry cin >> x; kopiec.push( x); //wstawiamy x do kopca while( !kopiec.empty() ) //dopóki w kopcu coś się znajduje { cout << kopiec.top() << endl; //wypisuj maksymalny element z kopca kopiec.pop(); //i go usuń } }
