当前位置:首页 > 芯闻号 > 充电吧
[导读]capacity和size理解capacity和size的区别非常重要,容器的size是指已经保存在容器中的数据的个数,而容量是指在不再重新分配内存的前提下容器最大可以包含的数据的个数。举个例子:容量

capacity和size


理解capacity和size的区别非常重要,容器的size是指已经保存在容器中的数据的个数,而容量是指在不再重新分配内存的前提下容器最大可以包含的数据的个数。举个例子:容量为2升的瓶子装了1升水。2升是capacity,1升是size。


管理容器的容量


在绝大多数情况下,程序员不必关注容器类内存管理的细节,把这些工作完全交给C++标准库。但是有时也会有例外:


要求操作的响应非常快,快到不能忽略从堆中申请内存的时间。

使用的空间非常大,大到不希望容器保持多余的内存空间。


这时就需要主动干预内存的取得和释放动作。C++标准库为此提供了相应的成员函数。


capacity:取得容器的容量

size:取得已经保存在容器中数据的个数。

reserve:分配至少可以容纳指定数量元素的内存空间。

shrink_to_fit:释放多余的内存空间,只保留可以容纳容器中数据的最小内存。


示例代码

 

vector

    

有两点需要特别说明:


在添加元素时,为了减少内存分配的次数,内存空间会分段取得,所以经常会略大于数据的个数

shrink_to_fit只是发出释放内存的请求,这个请求不一定总会被响应。


作者观点


要求不是很严格的时候,可以充分享受语言带来的便利和自由;条件很苛刻时,又可以实现充分的控制。这种收放自如的感觉恐怕只有C++程序员才能享受。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

其实在 c++语言里面const修饰的才算是一个真正的常量,在 c 语言中 const 可以说是个“冒牌货”。为什么会这样?其实是 c++ 编译器对 const 进行了加强,当 c++ 编译器遇到常量声明时,不会像 c...

关键字: c++ C语言 const

返回函数的引用去初始化一个新的引用这个和前面一样,都是不会产生副本,但是现在是用返回值去初始化一个引用声明c,也就是说这时候变成了变量temp的别名,在c的生命周期内temp是一直有效的,这样做完全可以。

关键字: c++ 返回值 引用声明

C++是一种面向对象的高级程序设计语言,是C语言的超集。

关键字: c++ C语言

这周分享的内容是关于 Docker 的基础,大概的内容分为下面的两个部分,另外还做了个视频,其实这个视频仅仅用来娱乐娱乐而已

关键字: Docker 容器 Pass项目

直播带货是近期发展非常迅猛的一种新的电商模式。

关键字: 电商 中间件 容器

AWS已宣布其Bottlerocket容器操作系统全面上市。 Bottlerocket是专门设计用于运行软件容器的开源Linux发行版。

关键字: aws Linux 容器

8月18日消息 8 月 13 日,Docker 更新网站服务协议。根据最新协议内容,被美国列入 “清单”的实体将无法使用 DockerEE、DockerHub,而开源版本 DockerCE 不受影响。

关键字: docker 容器 uos 统信

本文根据美团基础架构部王国梁在KubeCon 2020云原生开源峰会Cloud Native + Open Source Virtual Summit China 2020上的演讲内容整理而成。 一、

关键字: kubernetes 云平台 容器

如今,很多首席信息官或首席技术官都对容器技术有所了解,因此调研机构Gartner公司的调查报告指出四分之三的企业希望在2022年之前实现容器化应用就不足为奇了。然而令人惊讶的是,这项研究表明,目前只有

关键字: kubernetes 云计算 容器

Kubernetes已经成为各种规模企业在生产环境事实上的容器编排平台,在各种应用中设置Kubernetes都是基础。 那么在Kubernetes集群之上到底要构建什么?比如,Web和API层中的无状

关键字: kubernetes 容器
关闭
关闭