vector中保存指针时,正确的析构方法:(调用erase,clear不会自动调用A的析构函数)
#include <vector>
#include <iostream>
#include <list>
using namespace std;
class A
{
public:
~A()
{
cout << "A destructor invoked!" << endl;
}
};
void main()
{
vector<A*> avec;
avec.push_back(new A());
avec.push_back(new A());
avec.push_back(new A());
avec.push_back(new A());
vector<A*>::iterator begin = avec.begin(), end = avec.end();
for (;begin != end; ++begin)
{
delete *begin;
}
avec.erase(avec.begin(), avec.end());
}