"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ## **क्या `std::vector::erase`-रिटर्न किए गए इटरेटर्स हटाने के बाद वैध तत्वों की ओर इशारा करते हैं?**

## **क्या `std::vector::erase`-रिटर्न किए गए इटरेटर्स हटाने के बाद वैध तत्वों की ओर इशारा करते हैं?**

2024-11-09 को प्रकाशित
ब्राउज़ करें:576

## **Do `std::vector::erase`-returned iterators Point to Valid Elements After Removal?**

std::vector Iterator का अमान्यकरण: एक विस्तृत स्पष्टीकरण

std::vector में iterator अमान्यकरण की अवधारणा पर अक्सर चर्चा की गई है। स्पष्ट करने के लिए, std::vector::erase के माध्यम से वेक्टर तत्वों को मिटाने से मिटाए गए तत्व के ठीक बाद स्थित पुनरावर्तक को अमान्य कर दिया जाता है।

हालाँकि, मिटाए गए तत्व की सटीक स्थिति पर पुनरावर्तक की वैधता अनिश्चित बनी हुई है। तार्किक रूप से, कोई यह मान सकता है कि यह पुनरावर्तक वैध बना हुआ है क्योंकि वेक्टर का अंतर्निहित कार्यान्वयन आमतौर पर खाली स्थान को भरने के लिए शेष तत्वों को स्थानांतरित करता है। हालाँकि, अपरिभाषित परिणामों के लिए सटीक व्यवहार और क्षमता कम निश्चित है। वेक्टर प्रकार; वेक्टटाइप वीईसी; for (int i = 0; i

हालाँकि यह कोड व्यवहार में त्रुटियों के बिना निष्पादित होता प्रतीत होता है, इसकी वैधता बहस का विषय बनी हुई है।

typedef std::vector vectype;
vectype vec;

for (int i = 0; i 

bool is_odd(int x) { return (x % 2) == 1; } vec.erase(std::remove_if(vec.begin(), vec.end(), is_odd), vec.end());

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3