logo

תור עדיפות ב-C++

תור העדיפות ב-C++ הוא מיכל נגזר ב-STL שמתחשב רק באלמנט העדיפות הגבוהה ביותר. התור עוקב אחר מדיניות ה-FIFO בעוד שתור העדיפות מקפיץ את האלמנטים על סמך העדיפות, כלומר, האלמנט בעל העדיפות הגבוהה ביותר מוקפץ ראשון.

זה דומה לתור הרגיל בהיבטים מסוימים אך שונה באופנים הבאים:

להשוות במחרוזת
  • בתור עדיפות, כל אלמנט בתור משויך לעדיפות כלשהי, אך עדיפות לא קיימת במבנה נתוני תור.
  • האלמנט בעל העדיפות הגבוהה ביותר בתור עדיפות יוסר תחילה בעוד התור עוקב אחרי FIFO(First-In-First-Out) מדיניות פירושה שהרכיב שיוכנס ראשון יימחק ראשון.
  • אם קיים יותר מאלמנט אחד באותה עדיפות, אזי סדר האלמנט בתור יילקח בחשבון.

הערה: תור העדיפות הוא הגרסה המורחבת של תור רגיל, אלא שהאלמנט בעל העדיפות הגבוהה ביותר יוסר ראשון מתור העדיפות.

תחביר של תור עדיפות

 priority_queue variable_name; 

בואו נבין את תור העדיפות באמצעות דוגמה פשוטה.

תור עדיפות ב-C++

באיור שלמעלה, הכנסנו את האלמנטים באמצעות פונקציית push() ופעולת ההוספה זהה לתור הרגיל. אך כאשר אנו מוחקים את האלמנט מהתור באמצעות פונקציית pop() אז האלמנט בעל העדיפות הגבוהה ביותר יימחק ראשון.

פונקציית חבר של תור עדיפות

פוּנקצִיָה תיאור
לִדחוֹף() הוא מוסיף אלמנט חדש בתור עדיפות.
פּוֹפּ() זה מסיר את האלמנט העליון מהתור, בעל העדיפות הגבוהה ביותר.
חלק עליון() פונקציה זו משמשת כדי לטפל באלמנט העליון של תור עדיפות.
גודל() הוא קובע את הגודל של תור עדיפות.
ריק() הוא מוודא אם התור ריק או לא. בהתבסס על האימות, הוא מחזיר את הסטטוס.
לְהַחלִיף() הוא מחליף את האלמנטים של תור עדיפות בתור אחר בעל אותו סוג וגודל.
מקום() הוא מוסיף אלמנט חדש בראש תור העדיפות.

בואו ניצור תוכנית פשוטה של ​​תור עדיפות.

 #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&lt;<'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 &apos;p&apos; :3 30 20 10 zzzzz/ </pre> <p> <strong>Let&apos;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 &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; 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 &apos;p&apos; priority queue and four in &apos;q&apos; priority queue. After inserting the elements, we swap the elements of &apos;p&apos; queue with &apos;q&apos; 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>

בואו נראה דוגמה נוספת לתור עדיפות.

 #include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; std::endl; q.pop(); } return 0; } 

בקוד לעיל, הכרזנו על שני תורי עדיפות, כלומר, p ו-q. הכנסנו ארבעה אלמנטים בתור העדיפות 'p' וארבעה בתור העדיפות 'q'. לאחר הוספת האלמנטים, אנו מחליפים את הרכיבים של תור 'p' עם תור 'q' באמצעות פונקציית swap() .

תְפוּקָה

סדר לפי sql אקראי
 Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1