我有一个Qvector
QVector<const ClassA*> list;
我想知道在这种情况下清除qvector
的最佳方法是什么。
classa
不是QObject
。
请看一下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();
或者简单地使用List
中ClassA
的QScopedPointer
元素,并简单地调用Clear()。
在本例中,clear()
只释放向量中的指针列表,但不会释放内存。
我试着做这样的事
for (int index = 0; index < mList.count(); ++index )
{
const ClassA* value = const_cast<ClassA*>(mList[index ]);
delete value ;
}