Да.
for (auto it = m_map_buff_on_attrs.begin(); it != m_map_buff_on_attrs.end(); it++)
Поскольку вы используете только значение *it
и никаких других данных с этого итератора, цикл для диапазона будет проще.
if (NULL != it->second)
{
delete(it->second);
}
УдалениеNULL
четко определен и не имеет никакого эффекта, этот тест можно пропустить.
, который дает:
for (auto& p : m_map_buff_on_attrs) {
delete p.second;
}
Управление необработанными указателями является ошибкой-склонен и заставляет вас писать более бесполезный код.Если бы m_map_buff_on_attrs
была картой умных указателей, ваш код был бы просто:
} // m_map_buff_on_attrs goes out of scope and destroys and frees everything.