How do I erase elements while iterating with std::set in performance-sensitive code?

When working with std::set in C++, erasing elements while iterating can be tricky since it can invalidate iterators. However, you can safely remove elements by using the iterator returned by the erase function. This will help maintain performance in sensitive applications.

#include <set> #include <iostream> int main() { std::set mySet = {1, 2, 3, 4, 5, 6}; for (auto it = mySet.begin(); it != mySet.end(); ) { if (*it % 2 == 0) { // If the element is even it = mySet.erase(it); // erase returns the next iterator } else { ++it; // Move to the next element } } for (const auto &value : mySet) { std::cout << value << ' '; // Output the remaining elements } return 0; }

std::set erase elements iterator iterate performance-sensitive C++