vector中数据类型为指针时,需要将内部指针释放,否则会造成内存的泄露,释放的方式有两种:
方法1
vector<int*>A
.....
....
while (!A.empty()) {
INT* p = A.back();
delete p; p = NULL;
A.pop_back();
}
方法2
vector<int*>A
.....
....
for (auto it = A.begin(); it != A.end(); it++)
{
if (*it != NULL)
{
delete *it;
*it = NULL;
}
}
测试发现,方法 2 远比方法 1 速度更快
当vector中的数据类型不为指针时,若vector数组很大,占用大量内存,需要释放,不能使用 clear() 函数,因为虽然 clear() 函数可以清空所有元素,但是 vector 所占用的内存空间依然如故,无法保证内存的回收。可通过swap函数与一个临时变量交换,在临时变量消亡时会调用 vector 的析构函数释放内存
vector<int>A
.....
....
A.swap(vector<int>())