在STL容器的STL容器上调用清除

Try*_*yer 0 c++ stl

我在用

std::vector<std::vector<int>> S; 但问题也适用于嵌套的任何其他维度.

要从内容中清除内容S,从效率/内存的角度来看,是否足以调用S.clear();或首先应该clear是存储容器,在这种情况下std::vector<int>然后S.clear();是:

std::vector<std::vector<int>>::iterator iter;
for (iter = S.begin(); iter != S.end(); iter++) {
    iter->clear();
}
S.clear();
Run Code Online (Sandbox Code Playgroud)

Nat*_*ica 6

clear()不需要调用嵌套向量.当你调用clear()最外面的向量时,它将破坏向量中的每个元素.这将反过来破坏任何嵌套的向量.

std::vector 是一种RAII类型,因此只要您在其中存储RAII类型,它就会做正确的事情,因为类型会自行清理.