Re: Q: remove_if и map?
От: Аноним  
Дата: 30.07.02 06:48
Оценка:
Здравствуйте pesticide, Вы писали:

P>std::map<ROW_KEY, CRowFromat*>::reverse_iterator pIter;

P>for(pIter = m_Rows.rbegin(); pIter != m_Rows.rend(); pIter--)
P>{
P> CRowFromat *rf = pIter->second;
P> if(rf->field == 7)
P> {
P> m_Rows.erase(pIter->first);
P> }
P>}


прямой итератор:

std::map<ROW_KEY, CRowFromat*>::iterator pIter;
for(pIter = m_Rows.begin(); pIter != m_Rows.end(); )
{
    CRowFromat *rf = pIter->second;
    if(rf->field == 7)
    {
        m_Rows.erase(pIter++);
    }
    else ++pIter;
}


итерация должна происходить в самом цикле, а не в третьем поле for.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.