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

Erasing elements from a `std::deque` while iterating can lead to iterator invalidation issues. To safely remove elements, it's best to use the `erase` method combined with a loop that properly manages the iterator position. Below is an example that demonstrates how to do this effectively.

#include <deque> #include <iostream> int main() { std::deque<int> myDeque = {1, 2, 3, 4, 5}; for (auto it = myDeque.begin(); it != myDeque.end(); ) { if (*it % 2 == 0) { // Condition to remove even numbers it = myDeque.erase(it); // Erase and get new iterator } else { ++it; // Move to the next element } } // Output remaining elements for (const auto& value : myDeque) { std::cout << value << ' '; } return 0; }

C++ std::deque iterator erase embedded systems safe deletion