使用完数据结构后清空数据结构是一个好习惯吗?
Is it a good habit to empty data structures after you're done using them?
我在编程中使用各种数据结构,并且经常将数据从一个结构传输到另一个结构。
// 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
的容量,从而释放额外的内存。
更多关于它的信息 这里.
相关文章:
- 在学习数据结构之前对STL有一个了解是好的吗?
- 使用完数据结构后清空数据结构是一个好习惯吗?
- 如何将数据从一个结构链接到另一个结构
- C++设计一个数据结构
- 在C++中设置仅包含每个类的一个外观的数据结构
- 为什么像C++和Java这样的语言有一个内置的LinkedList数据结构
- 哪种数据结构是在一个向量中搜索和计数对象对的最佳数据结构
- c o(1)[x in s],其中x是一个值,s是数据结构
- 是否有一个更适合键值数据结构的QABSTRACTITEMMODEL类型类/接口
- CAD程序的数据结构.鼠标拾取和渲染一个数据
- 我需要一个像堆栈一样的数据结构,但具有随机访问,但是,我应该实现什么
- 在OpenGL中移动一个简单的形状(形状在数据结构中)
- 给定同一数据结构的两个迭代器,如何检查哪个迭代器在另一个之前
- 利用数据结构在C++上实现了一个图书馆管理系统
- 在高性能计算中更好的做法是:将数据结构传递到一个函数或一组变量中
- 说 C++ 中的数组或 Python 中的列表是一个类是否正确?数据结构?或两者兼而有之
- 如何将结构拆分为块,以便将字节保存到 C/C++ 中的另一个数据结构
- 这是一个具有基于数组的列表函数的数据结构项目,我似乎无法摆脱这个无限循环。
- 选择一个有效的数据结构来寻找韵律
- 如何在c++中动态创建一个具有列表底层数据结构的队列