zoukankan      html  css  js  c++  java
  • 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

      

      

  • 相关阅读:
    TestNG
    K近邻算法
    Python解决乱码问题
    Log4J 配置
    多线程死锁
    hadooplzo安装出错的解决方法
    B树
    设计模式
    整数序列化
    Maven
  • 原文地址:https://www.cnblogs.com/vinke2013/p/7209097.html
Copyright © 2011-2022 走看看