Qt入门教程(5) 容器的qDeleteAll、clear()方法的区别

  • A+
所属分类:Qt专栏 Qt经验集

Qt入门教程(5) 容器的qDeleteAll、clear()方法的区别

qDeleteAll:专门用于元素为指针的容器,对容器或者迭代器中的每个对象进行delete操作,而不是从容器中移除对象。源代码如下:

void qDeleteAll(ForwardIterator begin, ForwardIterator end)
 {
      while (begin != end)
      {
          delete *begin;
          ++begin;
      }
 }
 ```

QList<T> list;

1、当T的类型为指针时,调用clear方法能置空,即list的size为0,但并不能释放其指针元素的内存。qDeleteAll可以释放容器元素内存,但没有对容器的置空操作,也就是size没变。所以qDeleteAll之后必须加上clear方法。也就是说,在T为指针的情况下,如果想要清空容器中的元素,必须先调用qDeleteAll方法,再调用clear方法。

2、当T为对象时,直接调用clear()方法就可以清空list,并清空内存

Qt大课堂-QtShare

发表评论

您必须登录才能发表评论!