原因
在处理大数据时,发现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 }