清除std :: vector数组的最佳方法是什么?

时间:2015-12-15 00:44:18

标签: c++11 visual-c++ c++14

哪种方法更好更快,为什么?

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();

3 个答案:

答案 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();