Std :: list erasing (свободная память)

struct SomeStruct
{
};
class C
{
public: C() { for (int i = 0; i < 100; ++i) { m_List.push_back(new SomeStruct); } }
private: std::list<somestruct*> m_List;
};
</somestruct*>

Какой из двух вариантов деструктора быстрее (зачем?) Для освобождения памяти:

~C()
{ for (auto iter = m_List.begin(); iter != m_List.end(); ++iter) { delete *iter; }
}
~C()
{ while (m_List.size() != 0) { delete *m_List.begin(); m_List.pop_front(); }
}
1 ответ

Первый - быстрее. Второй - удаление головы и ее удаление. Вам не нужно явно удалять элементы списка. Полный список в любом случае будет уничтожен, так как он является членом C

licensed under cc by-sa 3.0 with attribution.