我創建一個類的列表,它創建的指針的對象一個新的列表:刪除指針的指針
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