vector的clear方法注意事项

Posted Nice vinke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector的clear方法注意事项相关的知识,希望对你有一定的参考价值。

  void clear():删除存储在vector中的所有元素

一、

  1.如果vector的元素是一些object,则它将为当前存储的每个元素调用它们各自的析构函数。

  2.如果vector存储的是指向对象的指针,此函数并不会调用到对应的析构函数。会造成内存泄漏。想要删除vector中的元素则应遍历vector使用delete,然后再clear

  for(int i = 0; i < vec.size(); ++i)

  {

    delete vec[i];

  }

  vec.clear();

  调用clear后,vector的size将变成0,但是它的容量capacity并未发生改变,clear只是删除数据,并未释放vector的内存

  vector的clear不影响capacity

  如果想要清空vector的元素,使用clear,如果想要释放vector的容量,可以使用swap

二、使用swap释放vector的容量

  vector<A>().swap(vec);

  或者vec.swap(vector<A>());
  重点:如果vector容器的元素是指针,先遍历容器,delete每个元素指向的内存,然后再用swap

  

  

 

以上是关于vector的clear方法注意事项的主要内容,如果未能解决你的问题,请参考以下文章

如何重置全局声明的向量[重复]

vector中erase()的使用注意事项

使用 svg(Scalable Vector Graphics)绘制前端图表的注意事项以及小技巧

vector 中需要注意的东西!

调用 clear() 后,vector 的元素仍然可以引用吗?

vector数组用法及举例