当list中保存的是指针的时候,调用erase会存在内存泄漏,需要使用下面的方法:该方法对vector无效
#include <vector>
#include <iostream>
#include <list>
using namespace std;
class A
{
public:
~A()
{
cout << "A destructor invoked!" << endl;
}
};
void main()
{
list<A*> alist;
alist.push_back(new A());
alist.push_back(new A());
alist.push_back(new A());
alist.push_back(new A());
//alist.erase(alist.begin(), alist.end());//没有调用析构函数
list<A*>::iterator begin = alist.begin(), end = alist.end();
while (begin != end)
{
A* temp = *begin;
begin = alist.erase(begin);
delete temp;
}
}