Iterator Invalidation Rules in C++: When Do Iterators Become Invalid?
Hi everyone! I started learning C++ and am writing a small program for processing a list of orders. I'm using `std::vector`. Here's simplified code:
```cpp
#include
#include
int main() {
std::vector orders = {101, 102, 103, 104, 105};
// Looking for order 103 and deleting it
for (auto it = orders.begin(); it != orders.end(); ++it) {
if (*it == 103) {
orders.erase(it); // <-- here I'm deleting an element
}
}
// Output remaining orders
for (int order : orders) {
std::cout << order << " ";
}
return 0;
}
```
In Visual Studio 2022 this code sometimes crashes with an error, and sometimes outputs strange numbers. I read that this is related to "iterator invalidation", but I don't fully understand what it means.
No answers yet.
Log in to leave an answer