使用完数据结构后清空数据结构是个好习惯吗?

Tel*_*ope 0 c++ data-structures

我在编程中使用了各种数据结构,我经常将数据从一种结构转移到另一种结构。

// assume that I want to transfer all data from v to Q
vector <int> v = {1, 2, 3, 4};
queue <int> Q;

for(int item : v){
    Q.push(item);
}
// after this point, v is no longer used
Run Code Online (Sandbox Code Playgroud)

使用完结构后,清空它是一个好习惯吗?例如,在上面的代码中,我应该v = {};在最后一条评论后输入吗?

Ast*_*ngs 6

不,那完全没有意义。

相反,将变量的范围最小化到您需要它们的地方,这样您就不会在您打算之后意外地使用它们;你的构建将失败。

使用函数(最好)或其他块作用域来做到这一点:

queue <int> Q;

{
   vector <int> v = {1, 2, 3, 4};
   for(int item : v){
       Q.push(item);
   }
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,如果您的容器绝对巨大并且您觉得有必要,您仍然可以获得回收内存的好处。