इस खंड में हम देखेंगे कि STL द्वारा C++ में लौटाए गए पॉइंटर्स का उपयोग करके इंडेक्स कैसे बनाया जाता है। जैसा कि हम जानते हैं कि सी ++ में कई इनबिल्ट फ़ंक्शंस पॉइंटर्स को मेमोरी में स्थिति में लौटाते हैं जो वांछित संख्या का पता प्रदान करता है, लेकिन इसका रिटर्न वैल्यू के कंटेनर में वास्तविक इंडेक्स से कोई संबंध नहीं है। उदाहरण के तौर पर, किसी कोड में अधिकतम तत्व निर्धारित करने के लिए, हम std::max_element() फ़ंक्शन का उपयोग करते हैं, यह वांछित तत्व की अनुक्रमणिका वापस नहीं करता है, लेकिन स्मृति में पता वापस कर देता है। लेकिन कभी-कभी, हमें उस पते से अनुक्रमणिका प्राप्त करने की आवश्यकता होती है। यहां हम देखेंगे कि हम सूचकांक कैसे उत्पन्न कर सकते हैं।
पहले इटरेटर को घटाना
कंटेनर.बेगिन () विधि से हमें पहली स्थिति का पता मिलेगा। अब दिए गए पते से प्रारंभ पता घटाकर हम अंतर प्राप्त कर सकते हैं। वहां से हम इंडेक्स ढूंढ सकते हैं।
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int main(){ vector<int> vec = { 10, 40, 50, 60, 30}; cout << "Max element is : " << (*max_element(vec.begin(), vec.end())) << endl; cout << "The index of maximum element : "; cout << max_element(vec.begin(), vec.end()) - vec.begin(); }
आउटपुट
Max element is : 60 The index of maximum element : 3
अनुक्रमणिका खोजने का दूसरा तरीका std::distance() विधि का उपयोग करना है। हम इसे नीचे के रूप में उपयोग करेंगे -
उदाहरण
#include <bits/stdc++.h> using namespace std; int main(){ vector<int< vec = { 10, 40, 50, 60, 30}; cout << "Max element is : " << (*max_element(vec.begin(), vec.end())) << endl; cout << "The index of maximum element : "; cout << distance(vec.begin(), max_element(vec.begin(), vec.end())); }
आउटपुट
Max element is : 60 The index of maximum element : 3