std::vector Iterator का अमान्यकरण: एक विस्तृत स्पष्टीकरण
std::vector में iterator अमान्यकरण की अवधारणा पर अक्सर चर्चा की गई है। स्पष्ट करने के लिए, std::vector::erase के माध्यम से वेक्टर तत्वों को मिटाने से मिटाए गए तत्व के ठीक बाद स्थित पुनरावर्तक को अमान्य कर दिया जाता है।
हालाँकि, मिटाए गए तत्व की सटीक स्थिति पर पुनरावर्तक की वैधता अनिश्चित बनी हुई है। तार्किक रूप से, कोई यह मान सकता है कि यह पुनरावर्तक वैध बना हुआ है क्योंकि वेक्टर का अंतर्निहित कार्यान्वयन आमतौर पर खाली स्थान को भरने के लिए शेष तत्वों को स्थानांतरित करता है। हालाँकि, अपरिभाषित परिणामों के लिए सटीक व्यवहार और क्षमता कम निश्चित है। हालाँकि यह कोड व्यवहार में त्रुटियों के बिना निष्पादित होता प्रतीत होता है, इसकी वैधता बहस का विषय बनी हुई है। bool is_odd(int x) { return (x % 2) == 1; }
vec.erase(std::remove_if(vec.begin(), vec.end(), is_odd), vec.end());typedef std::vector
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3