我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++11如何管理容器的容量

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++11如何管理容器的容量

本篇内容介绍了“C++11如何管理容器的容量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

capacity和size

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

管理容器的容量

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

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

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

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

capacity:取得容器的容量

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

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

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

示例代码

vector<int> 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

有两点需要特别说明:

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

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

“C++11如何管理容器的容量”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++11如何管理容器的容量

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++11如何管理容器的容量

本篇内容介绍了“C++11如何管理容器的容量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!capacity和size理解capacity和s
2023-06-19

C++11的array容器怎么使用

本篇内容介绍了“C++11的array容器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
2023-06-19

C++11容器的insert怎么使用

本篇内容介绍了“C++11容器的insert怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从C++98到C++11C++98中的in
2023-06-19

如何用 Podman Compose 管理容器

这篇文章主要讲解了“如何用 Podman Compose 管理容器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用 Podman Compose 管理容器”吧!容器很棒,让你可以将你的应
2023-06-15

使用C++进行云容器化:容器编排与管理

在云中使用 c++++ 容器化应用程序的最佳实践涉及容器编排和管理。容器编排工具包括 kubernetes、docker swarm 和 apache mesos,可管理和协调容器。容器管理涉及监控、维护和扩展,包括监控(prometheu
使用C++进行云容器化:容器编排与管理
2024-05-11

C++11中forward_list容器的性能怎么样

这篇文章主要讲解了“C++11中forward_list容器的性能怎么样”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11中forward_list容器的性能怎么样”吧!为了了解for
2023-06-19

C++11容器的emplace成员举例分析

这篇文章主要介绍“C++11容器的emplace成员举例分析”,在日常操作中,相信很多人在C++11容器的emplace成员举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++11容器的emplace
2023-06-19

如何对C++资源管理内容分析研究

这篇文章给大家介绍如何对C++资源管理内容分析研究,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。下面进行对C++资源管理的问题进行讲解,那么首先要对C++语言的概念进行了解,所谓C++语言:它是一种使用非常广泛的计算机
2023-06-17

如何使用Docker客户端管理容器

这篇文章主要介绍了如何使用Docker客户端管理容器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。传统上,在管理物理服务器或虚拟机时,我们只需要连接RDP(运行Windows
2023-06-03

C++容器Vector如何使用

今天小编给大家分享一下C++容器Vector如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Vector简介Vecto
2023-06-30

C++如何实现STL容器

这篇文章给大家分享的是有关C++如何实现STL容器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。各大容器的特点:1.可以用下标访问的容器有(既可以插入也可以赋值):vector、deque、map;特别要注意一下
2023-06-29

C++11关联容器的列表怎么初始化

本篇内容介绍了“C++11关联容器的列表怎么初始化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是关联容器关联容器(associativ
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录