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;
};
析构函数的两个变体中哪一个更快(为什么?)释放内存:
~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();
}
}
答案 0 :(得分:1)
第一个更快。第二个是删除头部并将其删除。您不需要显式删除列表元素。无论如何,完整列表将被销毁,因为它是C
的成员