一个容易的vector释放内存语句。
一个简单的vector释放内存语句。。对于swap语句,我有一些疑惑,就写在我对此的理解上吧。C/C++ codevectorT(
一个简单的vector释放内存语句。。
对于swap语句,我有一些疑惑,就写在我对此的理解上吧。
C/C++ codevector<T>().swap(vector<T> val);
这句话的意思是 释放 vector<T> 类型的实例 val的内存。
原理:是 vector<T> val 与 一个空的 vector<T> 类型变量互换 地址(仅仅是起始和结尾?)然后析构这个原来是空的vector<T> 类型变量,也就释放了内存,同时vector<T> val 变成了一个空的vector<T> 对象。
求问
1.此swap应用场合?若是局部变量,局部执行完之后自动析构了,也就不用swap了。。
2.此swap的优缺点,是否有可替代函数?
[解决办法]在调试时按Alt+8,F11
[解决办法]在删除vector里面所有的元素后想立即释放分配的动态内存就需要用到swap
[解决办法]这是个语法错误 .
swap 不是一个const 成员函数.
而vector() 不是左值.
[解决办法]vector::swap,我认为正确的用法应该是定义两个vector<int>对象,然后交换空对象,楼主vector<int>()是没有明确定义的,用来交换ivec编译可以通过,但是容易出问题吧;
swap的适用范围应该就是2楼所说,在删除了vector后想立即释放内存就用;
替代函数可以用vector::clear,删除所有元素并调用析构,剩余vector容器size为0.