इस लेख में हम C++ STL में गैर-बढ़ते क्रम में क्रमबद्ध एक सरणी के लिए vector::upper_bound() और vector::lower_bound() पर चर्चा करने जा रहे हैं।
वेक्टर गतिशील सरणियों के समान हैं; जब भी कोई मान उस कंटेनर में डाला या हटाया जाता है, जहां हम मान संग्रहीत कर रहे हैं, तो वे इसके आकार को स्वयं संशोधित करने की क्षमता रखते हैं।
एक वेक्टर में, निचला बाउंड एक इटरेटर देता है जो उस श्रेणी के पहले तत्व की ओर इशारा करता है जो दिए गए मान की तुलना नहीं करता है। अपर बाउंड एक इटरेटर पॉइंटिंग एलिमेंट को उस सीमा में लौटाता है जो दिए गए मान से छोटा है।
इनपुट
30 30 30 20 20 20 10 10
आउटपुट
Lower bound of 20= 3 Upper bound of 20= 6
इनपुट
9 9 8 8 8 7 7 7 6 6 6 6
आउटपुट
Lower bound of 7= 5 Upper bound of 7= 8
रिटर्न वैल्यू
यह श्रेणी के पहले तत्व की ओर इशारा करते हुए एक पुनरावर्तक देता है और श्रेणी के अंतिम तत्व की ओर इशारा करते हुए पुनरावर्तक भी देता है।
दृष्टिकोण जिसका अनुसरण किया जा सकता है
-
सबसे पहले, हम वेक्टर को इनिशियलाइज़ करते हैं।
-
फिर हम वेक्टर तत्व को गैर-बढ़ते क्रम में क्रमबद्ध करते हैं।
-
तब हम इसकी निचली सीमा पाते हैं।
-
तब हम इसकी ऊपरी सीमा पाते हैं।
-
अंत में हम दोनों सीमाओं को प्रिंट करते हैं।
उपरोक्त दृष्टिकोण का उपयोग करके, हम किसी भी वेक्टर के निचले बाउंड और अपर बाउंड का पता लगा सकते हैं, इसे लोअर और अपर बाउंड को खोजने के लिए वेक्टर को सॉर्ट करना आवश्यक है। यदि वेक्टर को सॉर्ट नहीं किया जाता है, तो हम इसकी बाउंड नहीं ढूंढ सकते हैं
उदाहरण
/ / C++ program to demonstrate the working of lower bound and upper bound #include<iosteam.h> #include<vector.h> Using namespace std; int main ( ){ int vect[ ] = {13,13,13,16,16,16,17,17,17,17,18,18} vector<int> v(vect, vect+8); sort (v.begin( ), v.end( ), greater<int>( )); cout<< “ \n Sorted Vector: ”; for( auto i = vect.begin( ), i =! vect.end( ), ++i) vector<int> iterator low, up; low = lower_bound (v.begin( ), v.end( ), 17); up = upper_bound (v.begin( ), v.end( ), 17); cout<<” Lower bound” << (lower – v.begin( ))<< “ \n”; cout<< “ Upper bound “<< (upper – v,begin( ))<<”\n”; return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Sorted Vector: 18 18 17 17 17 17 16 16 16 13 13 13 Lower bound = 2 Upper bound = 6
उदाहरण
#include<iosteam.h> #include<vector.h> Using namespace std; int main ( ){ int vect[ ] = {5,5,5,5,7,7 7,8,8,8,8,9,9,9,10,10} vector<int> v(vect, vect+16); sort (v.begin( ), v.end( )); cout<< “ \n Sorted Vector: ”; for( auto i = vect.begin( ), i =!vect.end( ), ++i) vector<int> iterator low, up; low = lower_bound (v.begin( ), v.end( ), 8); up = upper_bound (v.begin( ), v.end( ), 8); cout<<” Lower bound” << (lower – v.begin( ))<< “ \n”; cout<< “ Upper bound “<< (upper – v,begin( ))<<”\n”; return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Sorted Vector: 10 10 9 9 9 8 8 8 8 7 7 7 5 5 5 5 Lower bound = 5 Upper bound = 9