How do I erase elements while iterating with std::vector for embedded targets?

When working with C++ and `std::vector`, it can be tricky to remove elements while iterating through the vector. The standard methods of erasing elements can lead to invalid iterators, causing runtime errors. Below is an example illustrating how to safely erase elements while iterating a vector.

#include <iostream> #include <vector> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9}; for (auto it = numbers.begin(); it != numbers.end(); ) { if (*it % 2 == 0) { // Remove even numbers it = numbers.erase(it); // Safe erase, returns next iterator } else { ++it; // Only increment if not erasing } } // Display remaining numbers for (int n : numbers) { std::cout << n << " "; } return 0; }

C++ std::vector erase elements iterator safe erase embedded systems