c++,stl容器调用clear清除数据出现假删除,需要使用swap交换方法以释放容器内存容量

c++,stl容器调用clear清除数据出现假删除,需要使用swap交换方法以释放容器内存容量

1、场景:
使用stl容器,例如vector时,想要清除其原有数据时,一般会直接调用其clear函数,但这样没有将容器内存删除干净。

2、问题:
容器中的数据没了,容器中的内存还在,也就是clear可以清除数据使容器size变成0,但不会是容器容量capacity变成0.

3、例子:
清除了,没全清除。

在这里插入图片描述
调用clear前,容器size为16,容量为19
在这里插入图片描述
调用clear后,容器size为0,数据成功被清除,但容量还是19,

4、解决方法:
clear与swap结合,之前博文讲述了swap可以缩减容器容量到当前size值,通过clear将size变成0以后,通过swap缩减容量为0,就可以得到一个“崭新”的空容器了,常用于清除类中数据容器。

在这里插入图片描述
clear后size为0,capacity为19
在这里插入图片描述
swap以后capacity也变成0,实现了内存释放。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值