2015-12-15 49 views
0

哪種方法更好更快,爲什麼?清除std :: vector數組的最佳方法?

for (unsigned int i=0; i<meshes.size(); i++) 
{ 
    meshes.erase(meshes.begin() + i); 
    if(meshes[i]) delete meshes[i]; 
} 

或這一個...

for (auto it = meshes.begin(); it != meshes.end(); ++it) 
    delete *it; 
meshes.clear(); 
+1

爲什麼你在向量中存儲指針? [什麼是「快」](http://ericlippert.com/2012/12/17/performance-rant/)?什麼是更好的」?兩者都很奇怪,緩慢和危險。 – Drop

+0

在向量中存儲指針有什麼問題? – NRitH

+5

第一個片段已完全損壞。第二個稍微少了一些。 –

回答

2

我不太知道你在想什麼,實現與第一個片段,但秒片段看起來正確的和有效的假設您的數據在std::vector<Mesh*>其中每個指針是new

5

理想情況下,你有std::vector<std::unique_ptr<Mesh>> meshes;,然後它只是meshes.clear();,或者如果可能的話,只是std::vector<Mesh>

+0

*理想*,'Mesh'不必動態分配:p – melak47

+0

@ melak47:是的,當然 - 增加:-) –

1

不妨使用Modern C++語法。

for (auto p: meshes) delete p; 
meshes.clear(); 
相關問題