Я пытаюсь перебирать forward_list
вручную и удалять определенные элементы. Мой вопрос по сути такой же, как этот , но с оговоркой forward_list
.
Следующий код (, например, только ), несмотря на то, что я не пересматривал before
после вызова «стереть после», не работает (производит бесконечный мусор).
#include <iostream>
#include <forward_list>
typedef std::forward_list<int>::iterator IT;
int main()
{
std::forward_list<int> m{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
IT before = m.before_begin();
for ( IT it = m.begin(); it != m.end(); ++it )
{
std::cout << *it;
if ( *it % 2 == 0 )
{
m.erase_after( before );
}
before = it;
}
for( int i : m )
{
std::cout << i;
}
}