std :: list erasing(可用内存)

时间:2013-08-15 12:48:09

标签: c++ performance destructor stdlist

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();
    }
}

1 个答案:

答案 0 :(得分:1)

第一个更快。第二个是删除头部并将其删除。您不需要显式删除列表元素。无论如何,完整列表将被销毁,因为它是C

的成员