priority queue stl
Μια σε βάθος ματιά στην ουρά προτεραιότητας στο STL.
Σε αυτήν τη σειρά Explicit C ++, έχουμε δει στοίβες και ουρές στο προηγούμενο σεμινάριο.
Σε αυτό το σεμινάριο, θα συζητήσουμε ένα ακόμη εξειδικευμένο κοντέινερ στο STL, δηλαδή ουρά προτεραιότητας.
etl δοκιμές ερωτήσεων και απαντήσεων συνέντευξης pdf
Η ουρά προτεραιότητας είναι ένα υιοθετημένο κοντέινερ στο STL. Η ουρά προτεραιότητας είναι ένα δοχείο που έχει τα στοιχεία διατεταγμένα σε μη φθίνουσα σειρά έτσι ώστε το πρώτο στοιχείο να είναι πάντα το μεγαλύτερο στοιχείο στην ουρά.
=> Επισκεφθείτε εδώ για την πλήρη λίστα μαθημάτων C ++.
Τι θα μάθετε:
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Σε αντίθεση με την κανονική ουρά που ωθεί και αναδύει το στοιχείο σύμφωνα με τη σειρά FIFO, η ουρά προτεραιότητας έχει στοιχεία σε μη φθίνουσα σειρά και έχει προτεραιότητα (σταθερή σειρά) για κάθε στοιχείο
Η ουρά προτεραιότητας μπορεί να προβληθεί με παρόμοιο τρόπο με τη δομή δεδομένων 'max heap' στο C ++.
Η γενική σύνταξη της ουράς προτεραιότητας είναι:
αλγόριθμος συντομότερης διαδρομής στον πηγαίο κώδικα java
priority_queue queue_name;
Έτσι, εάν θέλουμε να ορίσουμε μια ουρά προτεραιότητας του τύπου int, μπορούμε να την ορίσουμε ως εξής:
priority_queue mypqueue;
Ουρά προτεραιότητας - Λειτουργίες
Ας δούμε τις λειτουργίες που υποστηρίζονται από την ουρά προτεραιότητας παρακάτω.
- Σπρώξτε: Εισάγει ένα στοιχείο στην ουρά προτεραιότητας. Κατά την εισαγωγή στοιχείων, διατηρείται η προτεραιότητα των στοιχείων.
- Κρότος: Αφαιρεί το κορυφαίο στοιχείο από την ουρά προτεραιότητας.
- Μπλουζα: Επιστρέφει το κορυφαίο στοιχείο στην ουρά προτεραιότητας, δηλαδή το μεγαλύτερο στοιχείο στην ουρά προτεραιότητας.
- Αδειάζω: Ελέγχει εάν η ουρά προτεραιότητας είναι κενή.
- Μέγεθος: Επιστρέφει το μέγεθος της ουράς προτεραιότητας, δηλαδή τον αριθμό των στοιχείων στην ουρά προτεραιότητας.
Ας γράψουμε ένα πρόγραμμα για να δείξουμε τη χρήση αυτών των λειτουργιών / λειτουργιών.
#include #include using namespace std; void displaypq(priority_queue pri_queue) { priority_queue pq = pri_queue; while (!pq.empty()) { cout << ' ' << pq.top(); pq.pop(); } cout << '
'; } int main () { priority_queue mypq; mypq.push(1); mypq.push(3); mypq.push(60); cout<<'
Priority queue after inserting value 60: '; displaypq(mypq); mypq.push(5); cout<<'
Priority queue after inserting value 5: '; displaypq(mypq); mypq.push(10); cout << '
The priority queue mypq is : '; displaypq(mypq); cout << '
mypq.size() : ' << mypq.size(); cout << '
mypq.top() : ' << mypq.top(); cout << '
mypq.pop() : '; mypq.pop(); displaypq(mypq); return 0; }
Παραγωγή:
Ουρά προτεραιότητας μετά την εισαγωγή της τιμής 60: 60 3 1
Ουρά προτεραιότητας μετά την εισαγωγή της τιμής 5: 60 5 3 1
Η ουρά προτεραιότητας mypq είναι: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Τι είναι η δοκιμή συστήματος με παράδειγμα
Ελέγξτε προσεκτικά την έξοδο για να κατανοήσετε την ουρά προτεραιότητας. Πρώτα, ωθούμε τις τιμές 1,3,60 όπως φαίνεται στην πρώτη γραμμή της εξόδου. Στη συνέχεια, πατάμε την τιμή 5 στην ουρά προτεραιότητας. Μετά από αυτό, εμφανίζεται η ουρά προτεραιότητας. Σημειώστε ότι παρόλο που η τιμή 5 ωθείται μετά το 60, η κορυφή της ουράς προτεραιότητας παραμένει 60.
Και πάλι πιέζουμε μια άλλη τιμή 10 και ακόμα, η κορυφή της ουράς προτεραιότητας είναι 60. Αυτό οφείλεται στο γεγονός ότι κατά την ώθηση των στοιχείων, η σειρά ή η προτεραιότητα των στοιχείων διατηρείται έτσι ώστε το μεγαλύτερο στοιχείο να είναι πάντα στην κορυφή.
συμπέρασμα
Αυτό αφορούσε την εφαρμογή ουράς προτεραιότητας στο STL. Στο επόμενο σεμινάριό μας, θα μάθουμε περισσότερα σχετικά με τα κοντέινερ STL όπως το χάρτη και το σετ.
=> Κάντε κλικ εδώ για την σειρά απόλυτης προπόνησης C ++.