इस ट्यूटोरियल में, हम C++ में इटरेटर इनवैलिडेशन को समझने के लिए एक प्रोग्राम पर चर्चा करेंगे।
कंटेनर ऑब्जेक्ट के तत्वों पर पुनरावृति करते समय, कभी-कभी यह अमान्य हो सकता है यदि हम बाउंड चेक लागू नहीं करते हैं। यह मुख्य रूप से कंटेनर ऑब्जेक्ट के आकार और आकृति में परिवर्तन के कारण होता है।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int main() {
// वेक्टर घोषित करना
vector<int> v{1, 5, 10, 15, 20};
// निष्पादन के दौरान वेक्टर बदलना
// जिससे बाउंड इनवैलिडेशन होगा
for (auto it = v.begin(); it != v.end(); it++)
if ((*it) == 5)
v.push_back(-1);
for (auto it = v.begin(); it != v.end(); it++)
cout << (*it) << " ";
return 0;
}
आउटपुट
1 5 10 15 20 -1 -1
(यह भी हो सकता है कि नए तत्व को जोड़ने के लिए, वेक्टर को एक नए स्थान पर कॉपी किया जाए जहां हमारा इटरेटर अभी भी पुराने की ओर इशारा कर रहा हो जो तब त्रुटि देगा।)