इस ट्यूटोरियल में, हम C++ में इटरेटर अमान्यता को समझने के लिए एक प्रोग्राम पर चर्चा करेंगे।
कंटेनर ऑब्जेक्ट के तत्वों पर पुनरावृति करते समय, कभी-कभी यदि हम बाउंड चेक लागू नहीं करते हैं तो यह अमान्य हो सकता है। यह मुख्य रूप से कंटेनर ऑब्जेक्ट के आकार और आकार में परिवर्तन के कारण होता है।
उदाहरण
#include <bits/stdc++.h> using namespace std; int main() { //declaring a vector vector <int> v{1, 5, 10, 15, 20}; //changing vector during execution //which will cause bound invalidation 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
(ऐसा भी हो सकता है कि नए तत्व को जोड़ने के लिए, वेक्टर एक नए स्थान पर कॉपी हो जाता है, हमारे इटरेटर अभी भी पुराने को इंगित करता है जो तब एक त्रुटि देगा।)