1) 我可以使用 qDeleteAll()
吗?用于删除使用 new[]
创建的对象数组?
QVector<int*> aVector;
int * a=new int[100];
for(int i=0;i<100;i++)
a[i]=i;
aVector.push_back(a);
....
if(!aVector.isEmpty())
{
qDeleteAll(aVector);
aVector.clear();
}
2) 是qDeleteAll()
实现删除 QVector< QVector<*> >
?
QVector< QVector<int*> > v;
.....
qDeleteAll(v);
最佳答案
qDeleteAll
使用 C++ delete
运算符删除容器中的项目。因此,您不能删除使用 new[]
和 qDeleteAll
创建的对象。
关于第二个问题,容器的容器没有任何重载。您应该对 vector 的每个项目调用 qDeleteAll
:
foreach(QVector<int*> vector, v)
qDeleteAll(vector);
关于c++ - qDeleteAll 和 new[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28765057/