我创建一个类的列表,它创建的指针的对象一个新的列表:删除指针的指针
FeatureSet::FeatureSet() {
this->featuresList = new list<HaarFeature*>;
globalCounter = 0;
}
现在我想删除列表中的所有对象,然后删除该指针到名单。我的代码是:
FeatureSet::~FeatureSet() {
for (list<HaarFeature*>::iterator it = featuresList->begin(); it != featuresList->end(); it++) {
delete *it;
}
delete featuresList; // this take a long time (more than half a minute)
}
我的问题是什么是最好的方法来解决这个问题?我的方法是否正确?不幸的是,当前最后的操作(删除指向列表的指针)大约需要半分钟。列表有大约250000个对象。
您确定需要存储指向'HaarFeature'的指针吗?它有多大?创建/复制是否昂贵?按价值存储'HaarFeature'实际上可能会加快速度。 – 2012-03-14 19:54:19
另外,你不需要在堆上分配'std :: list'。 'std :: list'已经将对象存储在堆上。最后,你确定'std :: list'比'std :: vector'好吗? – 2012-03-14 19:58:35
我选择了一个列表容器,因为我按顺序遍历所有对象多次。在我看来,矢量清晰度更快,但在创建和按顺序访问对象时速度更慢。我创建了一个指向列表的指针,因为我想确保访问对象,即使FeatureSet对象将被销毁。 HaarFeature类的一个对象很小,但我不确定存储整个对象而不是指向对象的指针会提高清除列表的速度。 – Viper 2012-03-15 10:36:02