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

Is it a good habit to empty data structures after you're done using them?

本文关键字:数据结构 一个 好习惯 清空      更新时间:2023-10-16

我在编程中使用各种数据结构,并且经常将数据从一个结构传输到另一个结构。

// 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

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

不,那完全没有意义。

相反,将变量的范围最小化到需要它们的位置,这样您就不会意外地使用它们;您的构建将失败。

使用函数(最好(或其他块作用域执行此操作:

queue <int> Q;
{
vector <int> v = {1, 2, 3, 4};
for(int item : v){
Q.push(item);
}
}

这样,如果您所在的容器绝对很大并且您觉得需要,您仍然可以获得回收内存的好处。

这样做是没有意义的。

如果你要重用vector,只需先v.clear()它,或者如果知道当前范围内变量的状态令人困惑,请考虑重构函数。

No.当向量超出范围时,数据无论如何都会"消失"。

如果在更广泛的范围内使用vector,则可以使用方法shrink_to_fit,以减少vector的容量,从而释放额外的内存。

更多关于它的信息 这里.