Здравствуйте 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.