一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

原因

  在处理大数据时,发现QVector直接用clear后台查看程序所占用的内存并没有下降

QVector数据清理

1 QVector<int>example_vec;
2 example_vec.clear();

QVector内存清理

1 QVector<int>example_vec;
2 example_vec.shrink_to_fit(); //程序运行到此处时内存才被降下去

QVector另外一种清空方式

QVector().swap(a):清空一个 QVector 对象 a 的内容

  • 具体解释:QVector 是 Qt 框架提供的一个动态数组容器类,用于存储和操作元素的集合。通过调用 swap() 函数,可以交换两个容器的内容,包括其中存储的元素。在这个特定的用法中,QVector() 创建了一个匿名的空 QVector 对象。然后,通过调用 swap(a),将这个空的 QVector 对象与 a 进行内容交换。由于交换后匿名的空 QVector 对象没有任何元素,因此实际上就达到了清空 a 的目的。
  • 好处:通过交换而不是逐个删除元素,可以更高效地清空 QVector 对象。在交换过程中,swap() 函数只需要交换指针,而不需要逐个删除元素,因此速度更快。
  • 注意的是,swap() 操作会改变对象的内容,因此在执行 swap() 后,a 将成为空的 QVector 对象。

例程:

 1 #include <QVector>
 2 #include <QString>
 3 #include <QDebug>
 4 
 5 int main()
 6 {
 7     QVector<QString> a;
 8     a.append("Item 1");
 9     a.append("Item 2");
10     a.append("Item 3");
11 
12     qDebug() << "原始 QVector a 的内容:" << a;
13 
14     QVector<QString>().swap(a);
15 
16     qDebug() << "清空后的 QVector a 的内容:" << a;
17 
18     return 0;
19 }

 

posted on 2024-03-05 18:32  一杯清酒邀明月  阅读(568)  评论(0编辑  收藏  举报