מהי שיטת lower_Bound() ב-C++

Mhy Sytt Lower Bound B C



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

מהי שיטת lower_bound()?

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

תחביר







לשיטת lower_bound() ב-C++ יש שתי וריאציות: ברירת מחדל ותחביר מותאם אישית.



תחביר ברירת מחדל

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



ForwardIterator lower_bound ( ForwardIterator תחילה , ForwardIterator אחרון , const ט & val ) ;

תחביר מותאם אישית

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





ForwardIterator lower_bound ( ForwardIterator תחילה , ForwardIterator אחרון , const ט & val , השווה comp ) ;

פרמטרים

שיטת lower_bound() ב-C++ לוקחת שלושה פרמטרים.

ראשון אחרון: שני הפרמטרים הראשונים, 'ראשון' ו'אחרון', קובעים את הטווח [ראשון, אחרון) שבו השיטה מחפשת את הגבול התחתון. הטווח מוגדר על ידי שני פרמטרים, כלומר 'ראשון' ו'אחרון'. הטווח כולל את כל האלמנטים בין האיטרטור 'הראשון' וה'אחרון', אך אינו כולל את האלמנט שעליו הצביע האיטרטור 'האחרון'.



ערך: הפרמטר השלישי של המתודה lower_bound() מכונה 'val'. הוא מייצג את הערך של הגבול התחתון שצריך למצוא בטווח שצוין. כאשר קוראים למתודה lower_bound() היא מחפשת את האלמנט הראשון בטווח שצוין של מיכל שגדול או שווה לערך הנתון 'val'.

comp: השיטה lower_bound() יכולה לקבל גם פונקציית השוואה בינארית כפרמטר הרביעי שלה. זה דורש שני טיעונים: הסוג שמצביע על ForwardIterator , והשני הוא val . לאחר מכן הפונקציה מחזירה ערך בוליאני על סמך השוואה בין שני הארגומנטים. הארגומנט comp לא משנה אף אחד מהארגומנטים שלו והוא יכול להיות רק מצביע פונקציה או אובייקט פונקציה.

ערך החזרה

ה-lower_bound() מחזיר איטרטור שמצביע לכיוון האלמנט הראשון שגדול או שווה ל- val . אם כל האלמנטים בטווח שצוין של מיכל קטנים מהערך הנתון val , השיטה lower_bound() מחזירה איטרטור המצביע על האלמנט האחרון בטווח, ואם כל האלמנטים גדולים מ- val , הוא נותן איטרטור שמצביע על האלמנט הראשון בטווח.

קוד לדוגמה

קוד C++ זה מדגים את השימוש בפונקציה std::lower_bound() כדי למצוא את האלמנט הראשון בוקטור ממוין שאינו קטן מערך נתון.

#include

int רָאשִׁי ( )

{

// וקטור קלט

סטד :: וֶקטוֹר < לְהַכפִּיל > ערכים { 10 , חֲמֵשׁ עֶשׂרֵה , עשרים , 25 , 30 } ;

// הדפס וקטור

סטד :: cout << 'וקטור מכיל:' ;

ל ( לא חתום int אני = 0 ; אני < ערכים. גודל ( ) ; אני ++ )

סטד :: cout << '' << ערכים [ אני ] ;

סטד :: cout << ' \n ' ;

סטד :: וֶקטוֹר < לְהַכפִּיל >:: איטרטור זה1 , זה2 , זה 3 ;

// std :: תחום_תחתון

זה1 = סטד :: חסם תחתון ( ערכים. התחל ( ) , ערכים. סוֹף ( ) , 13 ) ;

זה2 = סטד :: חסם תחתון ( ערכים. התחל ( ) , ערכים. סוֹף ( ) , 23 ) ;

זה 3 = סטד :: חסם תחתון ( ערכים. התחל ( ) , ערכים. סוֹף ( ) , 33 ) ;

סטד :: cout

<< ' \n lower_bound עבור רכיב 13 במיקום: '

<< ( זה1 - ערכים. התחל ( ) ) ;

סטד :: cout

<< ' \n lower_bound עבור רכיב 23 במיקום: '

<< ( זה2 - ערכים. התחל ( ) ) ;

סטד :: cout

<< ' \n bottom_bound עבור רכיב 33 במיקום: '

<< ( זה 3 - ערכים. התחל ( ) ) ;

לַחֲזוֹר 0 ;

}

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

לאחר מכן, הקוד מכריז על שלושה משתני std::vector::iterator בשם it1, it2 ו-it3. משתנים אלו ישמשו לאחסון התוצאות של קריאה ל-std::lower_bound() על וקטור הערכים עם ארגומנטים שונים.

הפונקציה std::lower_bound() נקראת עם שלושה ערכים שונים: 13, 23 ו-33. בכל קריאה, ה-lower_bound() נותן איטרטור שמצביע לכיוון האלמנט הראשון בוקטור שגדול או שווה ל- ערך שצוין.

לאחר מכן הקוד מדפיס את מיקומי האלמנטים הללו בווקטור על ידי הפחתת האיטרטור values.begin() מהאיטרטור המוחזר על ידי std::lower_bound(), שנותן את האינדקס של האלמנט בווקטור.

תְפוּקָה

סיכום

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