How do I iterate safely and efficiently with std::list?

When working with std::list in C++, safely and efficiently iterating through the elements can be achieved using iterators. With std::list being a doubly linked list, it allows for constant time insertions and deletions from anywhere in the list. Below is an example of how to iterate through a std::list while ensuring safety during modifications.

#include #include int main() { std::list numbers = {1, 2, 3, 4, 5}; for (auto it = numbers.begin(); it != numbers.end(); ) { std::cout << *it << " "; if (*it % 2 == 0) { // If the number is even, remove it from the list it = numbers.erase(it); // erase returns the next iterator } else { ++it; // only increment if not erasing } } return 0; }

std::list C++ iteration iterators safe efficient