כיצד ליישם תור עדיפות ב- C ++



מאמר זה יספק לכם ידע מפורט ומקיף כיצד ליישם תור עדיפות ב- C ++ עם דוגמאות.

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

ממשיך הלאה עם מאמר זה על Priority Queue ב- C ++





רכיבי STL

STL מורכב משיעורי תבניות ופונקציות אשר יכולים לשמש כגישה סטנדרטית לאחסון ועיבוד נתונים. בואו נדון במרכיבי ה- STL

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



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

איטרטור- איטרטור הוא אובייקט שמצביע לעבר אלמנט במיכל. מחמירים יכולים לסייע בשימוש במעבר בתוכן המכולה. מוחלפים הם כמו מצביעים שניתן להגדיל ולהוריד. הוא משמש כקישור בין האלגוריתם למיכל. איטרטורים משמשים לתמרון הנתונים המאוחסנים במיכל.

ההבדל בין הכיתה לממשק

ממשיך הלאה עם מאמר זה על Priority Queue ב- C ++



ערימות ותור עדיפות

כפי שראינו קודם תור עדיפות שייך לקטגוריה של מיכלים נגזרים. חברים אחרים בקטגוריה זו הם מחסור ותור. מיכלים נגזרים אלה ידועים גם כמתאמי מיכל.

ערימה, תור ותור עדיפות ידועים כמכולות נגזרות מכיוון שהן מיוצרות ממכולות רצף שונות. מכולות אלה אינן תומכות בשום סוג של איטרטורים שאינן משמשות למניפולציה של נתונים.

מהו בדיוק תור עדיפות?

במילים פשוטות, זהו מיכל בו השתמשנו לאחסון נתונים. לכל רכיב של הנתונים המאוחסנים מוקצה עדיפות כלשהי שיכולה לעזור לנו באחסון נתונים בסדר הגיוני.
תחביר:Priority_queue משתנה_שם

חשוב לכלול בתוכנית קובץ כותרת בכדי להשתמש בתור עדיפות.

התקן את php 7 בחלונות

תור עדיפות ב- c ++לדוגמא, אם נוסיף 2, 10, 30, 5, 6 בתור העדיפות שלנו באמצעות פונקציית הדחיפה ואז נקפיץ את האלמנטים באמצעות פונקציית הפופ, הפלט יהיה 30, 10, 6, 5, 2.

אוקיי, אז עכשיו אנחנו יודעים מה המטרה או השימוש בתור עדיפות. אבל איך זה ידע אם 30> 10? האם זה מבצע מיון כלשהו? בשלב זה ערימות נכנסות לתמונה. למידע על ערימות בפירוט עיין במאמר זה.

ערימות - ערמות הן מבנים דמויי עץ. בהתבסס על האופן שבו צמתי האלמנטים הבנים מסודרים בערמה ביחס לצמתים האב, הערמות מחולקות לשני חלקים.

אחד. מיני ערימה- בערימה מינימלית הערך של צומת האב קטן או שווה לערך צמתי הצאצא.

2. מקס הערמה- ב- Max Heap, הערך של צומת האב גדול או שווה לערך צמתי הצאצא.

הערה- תור עדיפות אינו ממיין את האלמנטים באמצעות אלגוריתם מיון כלשהו במקום זאת הוא אחסן את הנתונים בצורה של ערימה.

ממשיך הלאה עם מאמר זה על Priority Queue ב- C ++

הדפסת כל האלמנטים של תור עדיפות

לאחר הבנת היסודות של תור העדיפות, בואו נפעיל תוכניות להבנת השיטות הנפוצות ביותר עם תור עדיפות

# כלול # כלול באמצעות מרחב השמות std int main () {prior_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) בעוד (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

תְפוּקָה:

30 15 10 9 6 2

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

גודל( ): פונקציה זו מחזירה את הגודל של תור העדיפות

ריק( ): פונקציה זו משמשת כדי לבדוק אם תור העדיפות ריק או לא. זה מחזיר נכון בתור העדיפות ריק.

הבדל מעמדי וממשק מופשט

לדחוף (): מכניס אלמנט בתור העדיפות.

פופ (): פונקציה זו מסירה את האלמנט העליון בתור העדיפות שהוא האלמנט בעל העדיפות הגבוהה ביותר.

החלף (): פונקציה זו מחליפה את האלמנטים של תור העדיפות עם תור עדיפות אחר. הפונקציה תופסת תור עדיפות כפרמטר.

emplace (): פונקציה זו משמשת להוספת אלמנט בראש תור העדיפות.

בואו נסתכל על תוכנית אחת נוספת.

# כלול # כלול באמצעות מרחב השמות std int main () {prior_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) בעוד (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

תְפוּקָה:

2 6 7 9 10 15 30

עם זה, אנו מגיעים לסוף של תור עדיפות זה במאמר C ++. אם ברצונך ללמוד עוד, עיין ב מאת אדוריקה, חברת למידה מקוונת אמינה. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה נועד להכשיר אותך למושגי ליבה מרכזיים ומתקדמים יחד עם מסגרות Java שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה ונחזור אליך בהקדם האפשרי.