- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Iterator Invalidation in C++ program
In this tutorial, we will be discussing a program to understand iterator invalidation in C++.
While iterating over the elements of a container object, sometimes it can become invalidated if we don’t apply bound checks. This mainly occurs due to the change in the shape and size of the container object.
Example
#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; }
Output
1 5 10 15 20 -1 -1
(It may also happen that to add the new element, the vector gets copied to a new location with our iterator still pointing to the old one which will then give an error.)
Advertisements