避免 vector 持有它不再需要的内存,你需要把它从曾经最大的容量减少到它现在需要的容量。这样的减少容量的方法常被称为“收缩到合适”。可以这样做:

1   vector<Contestant>( contestants ).swap( contestants );

vector 的复制构造函数拷贝数据到临时vector,这个临时vector没有多余的容量,交换后,销毁

同样技巧用于 string:

1   string(s).swap(s);  // 在s上进行 “收缩到合适”

收缩到合适意味着:使容量和这个实现可以尽量给容器的当前大小一样小

另外,交换技巧的变体可以用于清除容器和减小它的容器到你的实现提供的最小值:

1   vector<Contestant> v;
2   string s;
3   .  .  .
4   vector<Contestant>().swap(v);  // 清除 v 而且最小化它的容量
5   string().swap(s);      // 清除 s 而且最小化它的容量

转载于:https://www.cnblogs.com/kidycharon/p/10016527.html

Effective_STL 学习笔记(十七) 使用 “交换技巧” 来修整过剩的容量相关推荐

  1. 【计算机网络学习笔记13】交换技术(下)

    [计算机网络学习笔记13]交换技术(下) 一.生成树的诞生和发展 1. 环路问题 两个网桥之间的连接网线如果只有一根,而这根网线或者接口有问题,网络就会出现单点故障.所以为了提高可靠性,网桥在互连时一 ...

  2. windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互

    windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互 前面两篇学习笔记分别介绍了IRP和IO_STACK_LOCATION,整个设备栈来处理这个IRP,但是每个设 ...

  3. 【计算机网络学习笔记12】交换技术(上)

    [计算机网络学习笔记12]交换技术(上) 经典局域网的交换技术 概念 以太网是由Xerox公司创建并由Xerox.intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议 ...

  4. Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条

    Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条 做好的宏脚本程序,每次打开脚本加载程序太多麻烦,为了方便的调用脚本做各种操作,可以使用系统的自定义工具条功能将脚本加载到工具条上. ...

  5. OpenCV学习笔记(十七)——K均值聚类

    当我们要预测的是一个离散值时,做的工作就是"分类".机器学习模型还可以将训练集中的数据划分为若干个组,每个组被称为一个"簇(cluster)".它的重要特点是在 ...

  6. kvm虚拟化学习笔记(十七)之KVM到KVM之v2v迁移

    1.源KVM虚拟主机node1 (1).查看源KVM虚拟主机上的虚拟机列表,本文计划将CentOS6.5-01虚拟机迁移到其它KVM虚拟主机中. [root@node1 ~]# virsh list ...

  7. 【theano-windows】学习笔记十七——梯度中的consider_constant

    前言 主要是在写玻尔兹曼机相关的theano时, 在计算梯度grad的时候发现一个参数名字叫做consider_constant,来看看这个到底做了什么事情 参考博客: using consider_ ...

  8. Mr.J-- jQuery学习笔记(十七)--动画淡入淡出弹窗广告

    之前写过动画的隐藏与显示:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 动画隐藏与显示的一个小demo--对联广告:Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告 展开 ...

  9. Java学习笔记十七——集合类详细总结各自对比

    Java编程基础倒数第三篇,感谢没有放弃的自己. 学习笔记参考书籍<Java编程基础>主编 张焕生.本书内容比较适合没有什么基础的入门小白,学完一章还有习题,比较适合初学者. 自律.积极. ...

最新文章

  1. 太赞了!副业月入3W的技术大佬的公众号,学起来!
  2. flutter-Text 以字符的方式截断
  3. Visual Studio“15”启动速度提升
  4. ssl1746-商务旅行【tarjan,LCA】
  5. 袁亚湘院士谈如何做好研究生:要逼着自己去想问题,最大的浪费是聪明人不思考...
  6. 【Flink】JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy
  7. mysql存储emoji表情
  8. 爱情智慧:从恋爱走向婚姻必备的理念
  9. FTP服务器异地备份文件,ftp异地备份
  10. 使用Python和Numpy构建神经网络模型
  11. 通过Tomtit实现Perl6开发工作流程的自动化
  12. 在windows上部署IIS web服务
  13. 寄存器一般多大,cpu一级缓存一般多大
  14. 一文读懂Kubernetes Scheduler扩展功能
  15. 有限体积法及其网格简介
  16. Android百度语音识别/语音助手
  17. linux shell 数据类型,Linux Shell脚本 - 变量和数据类型
  18. Linux9.23.1
  19. python 利用cartopy绘制世界地图中部分地区的风场的流线形式
  20. android中PreferenceScreen类的用法

热门文章

  1. apache的源码包编译
  2. October CMS - 快速入门 1 安装
  3. 分分钟使用Retrofit+Rxjava实现网络请求
  4. spring boot2 整合(三)JOOQ工具
  5. Word 2003中打开最近操作过的文档的两种推荐的方法
  6. zabbix在ubuntu16.04上的安装
  7. Centos 6 搭建安装 Gitlab
  8. 《神探tcpdump第五招》-linux命令五分钟系列之三十九
  9. c# 操作 Excel
  10. jqgrid for asp.net 遍历所有列rowObject时不用输入编号