STL - priority_queue

Dal quarto capitolo di Designing Components with the C++ STL, di Ulrich Breymann.

Una coda con priorità ritorna l'elemento che ha la priorità più alta. Il criterio con cui si determina la priorità va specificato all'atto della creazione della coda.

Nell'esempio che segue, creo prima una semplice coda con priorità che contiene interi e usa come container sottostante il default (vector, in alternativa é possibile usare anche deque) e come ordinamento ancora il default (less: il che vuol dire che il più grande intero é seleziona come primo). A seguire creo un'altra coda a priorità di interi che però usa come criterio di ordinamento greater, dunque il più piccolo intero della coda é considerato in testa:

#include <iostream>
#include <queue>
#include <vector>
#include <functional>

using namespace std;

int main() {
priority_queue<int> pq;

pq.push(20);
pq.push(10);
pq.push(30);

while(pq.empty() == false) {
cout << pq.top() << ' ';
pq.pop();
}
cout << endl;

priority_queue<int, vector<int>, greater<int> > pq2;

pq2.push(20);
pq2.push(10);
pq2.push(30);

while(pq2.empty() == false) {
cout << pq2.top() << ' ';
pq2.pop();
}
cout << endl;
}

Nessun commento:

Posta un commento