लोअर_बाउंड और अपर_बाउंड बिल्ट-इन बाइनरी सर्च फंक्शन हैं।
निचला_बाउंड - एक फ़ंक्शन जो लघुगणकीय समय में, क्रमबद्ध सरणी में सबसे छोटा तत्व पाता है जो दिए गए मान k से अधिक या उसके बराबर होता है।
यह सरणी की सीमा और k के मान को तर्क के रूप में लेता है।
यदि ऐसा कोई तत्व मौजूद नहीं है, तो पाया गया तत्व या सरणी के अंत (शामिल नहीं) के लिए एक पुनरावर्तक लौटाता है।
आप दस्तावेज़ीकरण में अधिक पढ़ सकते हैं।
अपर_बाउंड - एक फ़ंक्शन जो लघुगणकीय समय में एक क्रमबद्ध सरणी में सबसे छोटा तत्व पाता है जो दिए गए मान k से सख्ती से अधिक है।
यह सरणी की सीमा और k के मान को तर्क के रूप में लेता है।
यदि ऐसा कोई तत्व मौजूद नहीं है, तो पाया गया तत्व या सरणी के अंत (शामिल नहीं) के लिए एक पुनरावर्तक लौटाता है।
आप दस्तावेज़ीकरण में अधिक पढ़ सकते हैं।
यह स्पष्ट करने योग्य है कि उपरोक्त रैंडम एक्सेस संग्रह में पुनरावृत्तियों की कमी के कारण सेट या मल्टीसेट पर इन कार्यों का उपयोग लघुगणकीय समय में काम नहीं करता है।
हालाँकि, इन संग्रहों में संबंधित अंतर्निहित विधियाँ हैं (अर्थात, आपको उन्हें "डॉट के माध्यम से" उपयोग करने की आवश्यकता है)।
उदाहरण:
वेक्टर ए = {0, 1, 3, 5, 7};
वेक्टर::इटरेटर इट;
यह = निचला_बाउंड (a.begin (), a.end (), 4);
// * यह == 5
यह = निचला_बाउंड (a.begin (), a.end (), 5);
// * यह == 5
यह = निचला_बाउंड (a.begin (), a.end (), 8);
// यह == a.end ()
यह = ऊपरी_बाउंड (a.begin (), a.end (), 4);
// * यह == 5
यह = ऊपरी_बाउंड (a.begin (), a.end (), 5);
// * यह == 7
यह = ऊपरी_बाउंड (a.begin (), a.end (), -1);
// * यह == 0
// पुनरावृत्तियों को घटाकर, आप पाए गए तत्व का सूचकांक प्राप्त कर सकते हैं
int ind = निचला_बाउंड (a.begin (), a.end (), 4) - a.begin ();
// इंडस्ट्रीज़ == 3
// सेट और समान संग्रह के कार्यों के बजाय विधियों का उपयोग करने की आवश्यकता है
सेट एस {1, 3, 5};
सेट :: इटरेटर बैठो;
बैठो = s.lower_bound (3);
// *बैठो == 3
बैठो = s.upper_bound (3);
// *बैठो == 5