提问者:小点点

正确清洁QVector


我有一个Qvector

QVector<const ClassA*> list; 

我想知道在这种情况下清除qvector的最佳方法是什么。

classa不是QObject


共3个答案

匿名用户

请看一下qvector.clear()的文档--我认为它很好地回答了您的问题。

为了保存它,我把它复制到这里:

无效QVector::Clear()

从向量中移除所有元素。

注意:直到QT5.6,这也释放了向量使用的内存。 从Qt 5.7开始,容量保持不变。 要减少所有容量,请使用默认构造的向量进行交换:

QVector<T> v ...;
QVector<T>().swap(v);
Q_ASSERT(v.capacity() == 0);

或者调用squeeze()

匿名用户

我只建议在上面使用for each循环并删除每个指针。 然后清除矢量

for(auto item : list){
    delete item;
}
list.clear();

或者简单地使用ListClassAQScopedPointer元素,并简单地调用Clear()。

匿名用户

在本例中,clear()只释放向量中的指针列表,但不会释放内存。

我试着做这样的事

for (int index = 0; index < mList.count(); ++index )
{
    const ClassA* value = const_cast<ClassA*>(mList[index ]);
    delete value ;
}