Iterator Invalidation in std::forward_list
When do iterators become invalidated in a std::forward_list?
Iterators in a std::forward_list can become invalidated under certain circumstances:
Modifying Operations
Any operation that modifies the list, such as insert_after(), emplace_after(), erase_after(), push_front(), emplace_front(), pop_front(), or clear(), invalidates iterators pointing to the elements following the modified element.
#include <forward_list>
#include <iostream>
int main() {
  std::forward_list<int> list{1, 2, 3, 4};
  auto it = list.begin();
  ++it;                      // points to 2
  list.insert_after(it, 5);  // 'it' invalidated
  std::cout << *it;          // undefined behavior
}Reallocation
If the internal memory of the forward_list is reallocated (e.g., due to a call to resize()), all iterators are invalidated.
To avoid issues, it's best to re-obtain iterators after performing any modifying operation on the forward_list.
Linked Lists using std::forward_list
This lesson provides an in-depth exploration of std::forward_list, covering creation, management, and advanced list operations