Q: remove_if и map?
От: pesticide Украина  
Дата: 29.07.02 20:34
Оценка:
Хайолл!

Есть словарь, отображающий, допустим, некоторое число на некоторую структуру: map<ROW_KEY, CRowFromat*>.
Надо пройти по всем элементам словаря и удалить те из них, у которых в структуре некоторе поле будет установлено в определенное значение. Я применил следующий код:

std::map<ROW_KEY, CRowFromat*>::reverse_iterator pIter;
for(pIter = m_Rows.rbegin(); pIter != m_Rows.rend(); pIter--)
{
CRowFromat *rf = pIter->second;
if(rf->field == 7)
{
m_Rows.erase(pIter->first);
}
}

reverse_iterator пришлось применить так как тот же код с прямым итератором вызывал ошибку в erase(pIter->first)

Вопрос можно ли как-то к map применить алгоритм remove_if, чтобы не морочить себе голову с циклом? в MSDN-е есть пример только для list, а вот что передается в функцию-предикат в случае словаря?
Очень хотелось бы посмотреть на код.

Вопрос чисто из любопытства и в позновательных целях поэтому интересует именно возможность применения к map алгоритма remove_if или любого другого stl-алгоритма, реализующего такую функцию, хотя, по-моему, других таких нет.

Заранее благодарен

Удачи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.