迭代期间通过列表删除元素 - 安全性

Ano*_*ous 4 c++ iteration

我想知道这样的事情是否安全......

// Iterating through a <list>
while ( iter != seq.end()) {
  if ( test ) {
    iter = seq.erase( iter );
  } else {
    ++iter;
 }
Run Code Online (Sandbox Code Playgroud)

我知道以这种方式迭代向量会使迭代器失效,但是列表中会出现同样的情况吗?我假设不是因为列表是通过指针顺序而不是在内存中彼此"下一步",但任何保证都会有所帮助.

Jar*_*Par 5

这很好,因为erase方法返回一个新的有效迭代器.