Avatar ·

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.