哪种方法更好更快,为什么?
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();
答案 0 :(得分:5)
理想情况下,您有std::vector<std::unique_ptr<Mesh>> meshes;
,然后只有meshes.clear();
,或者如果可能,只有std::vector<Mesh>
!
答案 1 :(得分:2)
我不太清楚您尝试使用第一个代码段尝试实现的内容,但假设您的数据位于std::vector<Mesh*>
,其中每个指针都是{{},则秒代码片看起来正确且高效1}}编
答案 2 :(得分:1)
也可以使用Modern C ++语法。
for (auto p: meshes) delete p;
meshes.clear();