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

max*_*yne 0 visual-c++ c++11 c++14

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

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

还是这一个......

for (auto it = meshes.begin(); it != meshes.end(); ++it)
    delete *it;
meshes.clear();
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 5

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