Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में नॉन-इनक्रीजिंग वेक्टर के लिए अपर बाउंड और लोअर बाउंड


इस लेख में हम C++ STL में नॉन-इनक्रीजिंग ऑर्डर (गैर-बढ़ते क्रम) में सॉर्ट किए गए ऐरे के लिए vector::upper_bound() और vector::lower_bound() पर चर्चा करेंगे।

वेक्टर डायनामिक ऐरे के समान होते हैं; उनमें खुद को संशोधित करने की क्षमता होती है जब भी कंटेनर में कोई मान डाला या हटाया जाता है जहां हम मान संग्रहीत कर रहे होते हैं।

एक वेक्टर में, लोअर बाउंड रेंज में पहले तत्व की ओर इंगित करने वाला एक इटरेटर रिटर्न करता है जो दिए गए मान से कम नहीं होता (यानी greater than or equal to)। अपर बाउंड रेंज में उस तत्व की ओर इंगित करने वाला एक इटरेटर रिटर्न करता है जो दिए गए मान से सख्ती से बड़ा होता है (यानी strictly greater than)।

इनपुट

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++ प्रोग्राम लोअर बाउंड और अपर बाउंड के काम को प्रदर्शित करने के लिए
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int vect[] = {13, 13, 13, 16, 16, 16, 17, 17, 17, 17, 18, 18};
    vector<int> v(vect, vect + 12);
    sort(v.begin(), v.end(), greater<int>());
    cout << "\n Sorted Vector: ";
    for (auto i = v.begin(); i != v.end(); ++i)
        cout << *i << " ";
    
    vector<int>::iterator low, up;
    low = lower_bound(v.begin(), v.end(), 17, greater<int>());
    up = upper_bound(v.begin(), v.end(), 17, greater<int>());
    
    cout << "\n Lower bound: " << (low - v.begin()) << "\n";
    cout << " Upper bound: " << (up - 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 <iostream>
#include <vector>
#include <algorithm>
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(), greater<int>());
    cout << "\n Sorted Vector: ";
    for (auto i = v.begin(); i != v.end(); ++i)
        cout << *i << " ";
    
    vector<int>::iterator low, up;
    low = lower_bound(v.begin(), v.end(), 8, greater<int>());
    up = upper_bound(v.begin(), v.end(), 8, greater<int>());
    
    cout << "\n Lower bound: " << (low - v.begin()) << "\n";
    cout << " Upper bound: " << (up - 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

  1. C++ में ऊपरी विकर्ण को निचले विकर्ण से स्वैप करना C++ में ऊपरी विकर्ण को निचले विकर्ण से स्वैप करना

    यह ट्यूटोरियल C++ कोड का उपयोग करके तीन-विकर्ण ऐरे की ऊपरी पंक्ति को उसके निचले विकर्ण से स्वैप करने के लिए डिज़ाइन किया गया है। इसके अलावा, यदि तीन-विकर्ण ऐरे एक इनपुट है, तो वांछित परिणाम कुछ इस तरह होना चाहिए: इसके लिए, कार्यवाही का तरीका एल्गोरिदम में संक्षेप में बताया गया है: एल्गोरिदम चरण-1:

  1. C++ में घनाभ का आयतन और पृष्ठीय क्षेत्रफल C++ में घनाभ का आयतन और पृष्ठीय क्षेत्रफल

    घनाभ क्या है?घनाभ एक त्रि-आयामी वस्तु है जिसके छह फलक आयताकार आकार के होते हैं जिसका मतलब है कि इसकी लंबाई और चौड़ाई अलग-अलग होती है। घन और घनाभ में अंतर यह है कि घन की लंबाई, ऊंचाई और चौड़ाई समान होती है जबकि घनाभ में ये तीनों समान नहीं होती।घनाभ के गुण हैं -छह फलक12 किनारे8 शीर्षनीचे घन का चित्र द

  1. C++ में घन का आयतन और पृष्ठीय क्षेत्रफल C++ में घन का आयतन और पृष्ठीय क्षेत्रफल

    घन क्या है?घन एक त्रि-आयामी वस्तु है जिसके छह फलक वर्गाकार आकार के होते हैं जिसका मतलब है कि इसकी लंबाई और चौड़ाई समान होती है। घन एकमात्र नियमित हेक्साहेड्रॉन है जिसमें निम्नलिखित गुण हैं -छह फलक12 किनारे8 शीर्षनीचे घन का चित्र दिया गया हैसमस्याभुजा दी गई है, कार्य घन का कुल पृष्ठीय क्षेत्रफल और आय