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.