Я был вверх и вниз по stackoverflow и даже очень-очень хорошо Dr. Статья Доббса , но я не могу найти однозначного ответа на вопрос.
В разделе ответа на вопрос Каковы недостатки std :: reverse_iterator? говорится, что это может быть вообще невозможно.
std::list::reverse_iterator it = list.rbegin();
while( it != list.rend() )
{
int value=*it;
if( some_cond_met_on(value) )
{
++it;
list.erase( it.base() );
}
else
{
++it;
}
}
PS: Я знаю, что есть и другие альтернативы, такие как erase_if (), но я ищу ответ на этот конкретный вопрос.