C++11如何管理容器的容量
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容介绍了"C++11如何管理容器的容量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!capac
千家信息网最后更新 2025年12月03日C++11如何管理容器的容量
本篇内容介绍了"C++11如何管理容器的容量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
capacity和size
理解capacity和size的区别非常重要,容器的size是指已经保存在容器中的数据的个数,而容量是指在不再重新分配内存的前提下容器最大可以包含的数据的个数。举个例子:容量为2升的瓶子装了1升水。2升是capacity,1升是size。
管理容器的容量
在绝大多数情况下,程序员不必关注容器类内存管理的细节,把这些工作完全交给C++标准库。但是有时也会有例外:
要求操作的响应非常快,快到不能忽略从堆中申请内存的时间。
使用的空间非常大,大到不希望容器保持多余的内存空间。
这时就需要主动干预内存的取得和释放动作。C++标准库为此提供了相应的成员函数。
capacity:取得容器的容量
size:取得已经保存在容器中数据的个数。
reserve:分配至少可以容纳指定数量元素的内存空间。
shrink_to_fit:释放多余的内存空间,只保留可以容纳容器中数据的最小内存。
示例代码
vector v;
//v中没有元素,capacity为0
cout << v.capacity() << endl;//0
v.reserve(1000);
//预先取得保存1000个元素的空间,capacity为1000
cout << v.capacity() << endl;//1000
for(int i = 0; i < 1000; i++){
v.push_back(i);
}
//空间已经取得,不再增加,capacity仍为1000
cout << v.capacity() << endl;//1000
for(int i = 0; i < 100000; i++){
v.push_back(i);
}
//继续添加元素,自动分配空间
cout << v.capacity() << endl;//128000
for(int i = 0; i < 100000; i++){
v.pop_back();
}
//元素虽然删除,空间维持不变。
cout << v.capacity() << endl;//128000
v.shrink_to_fit();
//释放多余空间。
cout << v.capacity() << endl;//1000 有两点需要特别说明:
在添加元素时,为了减少内存分配的次数,内存空间会分段取得,所以经常会略大于数据的个数
shrink_to_fit只是发出释放内存的请求,这个请求不一定总会被响应。
"C++11如何管理容器的容量"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
容器
内存
空间
容量
元素
数据
管理
个数
分配
内容
情况
更多
标准
知识
C++
实用
最小
重要
主动
为此
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
线上pos机服务器异常
广州点金互联网科技有限公司
软件开发过程的主要环节
千牛科技广告公司互联网
东莞数据链软件开发平均价格
服务器硬盘重定向选项
公安部网络安全保卫局刘晓宇
甘肃企业微服务架构数据库
日本下软件用什么软件开发
中专网络技术题库
python图片生成数据库
cod4服务器还在吗
南通大学软件开发
国美的网络技术案例分析
数据库二进制和十进制区别
sql不显示系统数据库
我的世界最新服务器缺管理员
拉萨市网络安全周
网络安全小黑板访问
不同的战斗服务器
财务办公室服务器
数据库管理系统可以分为三类
龙岩市网络安全教育周
新一代测序技术数据库
网络安全之数据安全T级
大话西游现在最火的服务器
软件开发预算评审
查询数据库中是否存在某字段
以信息网络技术加速创新
网络安全劳模工作室名称大全