এই টিউটোরিয়ালে, আমরা 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
(এটাও ঘটতে পারে যে নতুন উপাদান যোগ করার জন্য, ভেক্টরটি একটি নতুন অবস্থানে অনুলিপি করা হয় যেখানে আমাদের পুনরাবৃত্তিকারীটি এখনও পুরানোটির দিকে নির্দেশ করে যা তারপরে একটি ত্রুটি দেবে৷)