Re: Remove_if или что-то ещё
От: BerAn  
Дата: 17.07.13 09:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть кусок кода:


А>
А>     for( std::vector< STATUS >::iterator it = m.begin() ; it != m.end() ; )
А>     {
А>          if( it->state == StatusOk )
А>          {
А>               it = m.erase( it );
А>          }
А>          else
А>          {
А>               ++it;
А>          }
А>     }
А>


А>Точно понимаю, что это оптимизируется в нормальный вызов remove_if. Как лучше сделать? А с бустом?


Не знаю, проще ли это:

m.erase( remove_if( m.begin(), m.end(),
     boost::bind(
          std::equal_to< тип, где StatusOk >(),
          boost::bind( &STATUS::state, _1 ), StatusOk )
     ),
     m.end() );
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.