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

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM