Как стереть * И ПРОДОЛЖИТЬ * с помощью std :: reverse_iterator?

Я был вверх и вниз по 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 (), но я ищу ответ на этот конкретный вопрос.

9
задан Community 23 May 2017 в 11:53
поделиться