low_bound و upper_bound وظائف بحث ثنائية مضمنة.
low_bound - دالة تجد ، في الوقت اللوغاريتمي ، أصغر عنصر في مصفوفة مرتبة أكبر من أو تساوي القيمة المعطاة k.
يأخذ حدود المصفوفة وقيمة k كوسيطات.
إرجاع مكرر إلى العنصر الموجود ، أو إلى نهاية (غير مدرج) المصفوفة في حالة عدم وجود مثل هذا العنصر.
يمكنك قراءة المزيد في
الوثائق .
upper_bound - دالة تجد في الوقت اللوغاريتمي في مصفوفة مرتبة أصغر عنصر أكبر من القيمة المعطاة k.
يأخذ حدود المصفوفة وقيمة k كوسيطات.
إرجاع مكرر إلى العنصر الموجود ، أو إلى نهاية (غير مدرج) المصفوفة في حالة عدم وجود مثل هذا العنصر.
يمكنك قراءة المزيد في
الوثائق .
تجدر الإشارة إلى أن استخدام هذه الوظائف على مجموعة أو مجموعة متعددة لا يعمل في الوقت اللوغاريتمي بسبب نقص التكرارات في مجموعات الوصول العشوائية المذكورة أعلاه.
ومع ذلك ، فإن هذه المجموعات لها طرق مضمنة مقابلة (أي أنك تحتاج إلى استخدامها "من خلال نقطة").
أمثلة:
نبسب ؛
المتجه a = {0، 1، 3، 5، 7} ؛
متجه :: مكرره ؛
it = lower_bound (a.begin () ، a.end () ، 4) ؛
// * هو == 5
it = low_bound (a.begin () ، a.end () ، 5) ؛
// * هو == 5
it = low_bound (a.begin () ، a.end () ، 8) ؛
// it == a.end ()
it = upper_bound (a.begin ()، a.end ()، 4) ؛
// * هو == 5
it = upper_bound (a.begin ()، a.end ()، 5) ؛
// * هو == 7
it = upper_bound (a.begin () ، a.end () ، -1) ؛
// * هو == 0
// عن طريق طرح التكرارات ، يمكنك الحصول على فهرس العنصر الذي تم العثور عليه
int ind = lower_bound (a.begin () ، a.end () ، 4) - a.begin () ؛
// ind == 3
// تحتاج إلى استخدام طرق بدلاً من وظائف للمجموعات والمجموعات المماثلة
ضبط s {1، 3، 5} ؛
ضبط :: iterator sit؛
الجلوس = s.lower_bound (3) ؛
// * الجلوس == 3
الجلوس = s.upper_bound (3) ؛
// * الجلوس == 5
نبسب ؛