vector的swap()方法释放内存实际是用了一个小技巧,swap()方法功能是交换对象,即将当前对象内容与传进的同类型vector对象交换。这里就是通过将当前vec对象和一个空临时vector对象交换,交换之后,vec对象的空间变为0,临时对象占用的内存空间变为 vec 之前占用的内存空间。临时对象的作用域就是该语句,随着生命周期结束,该...
但是,如果后来这个vector不再需要存那么多的元素了,已经通过erase删除了。但是以前咱们预留的空间却无法被其他程序再度利用,这样会造成内存 一定程度上的浪费。于是,我们利用目前的vector构造一个一模一样的vector,他并没有预留空间,于是以前预留的空间也被释放以作他用了: ivec.swap(vector<int>(ivec)); // or ...
swap释放vector的内存 参考: 1swap释放vector内存
vector这么做是为了避免频繁分配内存和拷贝。因为vector设计接近数组,要求数据连续存放。如果删除元素就释放内存,以后再添加可能会连续可用空间不够,需要移动到其他的内存区域。因为string内部的字符串数据在堆里,并没有直接放在vector中,而且从vector中删除时会释放掉数据。所以你不必担心vector没有释放的空间,一般都是很...
51CTO博客已为您找到关于vector swap释放内存的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及vector swap释放内存问答内容。更多vector swap释放内存相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
std::vector<int>b;// 方法一:与空 vector 进行交换std::vector<int>{}.swap(b);// 方法二:...
//收缩内存 vector<int>(v).swap(v);//匿名对象 cout << "v的容量为:" << v.capacity() << endl;//3 cout << "v的大小为:" << v.size() << endl;//3 } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
swap之后使用delete释放内存,但是delete/free也不是立即释放的,具体的“释放“时机,也就是何时在表中...