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 نبسب ؛
500 ms 256 Mb Rules for program design and list of errors in automatic problem checking