当前位置: 首页 > news >正文

【C++中resize和reserve的区别】

1. resize的用法

改变当前容器内含有元素的数量(size())比如:

vector<int> vct;int num = vct.size();//之前的元素个数为num
vct.resize(len);//现在的元素个数为len

如果num < len ,那么容器vct新增len - num个元素,元素的值默认为0;
若再对vct进行插入,如:

vct.push_back(1);//此时将1插入到vct末尾,其下标就为len,容器的容量变为len +1

2. reserve的用法

改变当前容器的最大容量(capacity),不会生成元素,只是确认这个容器允许放入多少对象,如果reserve(len)的值大于当前的capacity(),那么会重新分配一块能存len个元素的空间,然后把之前的vct.size()个元素通过copy construtor复制过来,销毁之前的内存。

3. 代码实现

#include<iostream>
#include<vector>
using namespace;int mian(){vector<int> vct;vct.reserve(100);vct.resize(50);cout << vct.size() << " " << vct.capacity() << endl;//50 100vct.reserve(150);cout << vct.size() << " " << vct.capacity() << endl;//50 150vct.resize(100);cout << vct.size() << " " << vct.capacity() << endl;//100 150vct.reserve(50);cout << vct.size() << " " << vct.capacity() << endl;//100 150return 0;
}

发现在进行了vct.reserve(150)之后,再将reserve()参数设置为比150小的,不发生变化,说明如果新的容量比原来的容量小,reserve()函数不会做任何事情。

http://www.lryc.cn/news/397062.html

相关文章:

  • 计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设
  • Python面试题:如何在 Python 中进行正则表达式操作?
  • C#面:简述什么是中间件(Middleware)?
  • AWS Glue 与 Amazon Redshift 的安全通信配置
  • nginx访问控制
  • 高效应对网络攻击,威胁检测响应(XDR)平台如何提升企业应急响应能力
  • 多线程问题
  • 自动优化:SQL Server数据库自动收缩配置指南
  • 华为机考真题 -- 密码解密
  • ScrapySharp框架:小红书视频数据采集的API集成与应用
  • PostgreSQL 数据库监控项
  • 用python生成词频云图(python实例二十一)
  • HTML 标签简写和全称及其对应的中文说明和实例
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • 全网最适合入门的面向对象编程教程:13 类和对象的 Python 实现-可视化阅读代码神器 Sourcetrail 的安装使用
  • Django 视图 - FBV 与 CBV
  • AI机器人在未来的应用场景预测:是否会取代人类?华为、百度、特斯拉他们在AI领域都在做什么?
  • 第58期 | GPTSecurity周报
  • maven 依赖冲突
  • demon drone 200无人机标定流程
  • 案例开发-日程管理-第一期
  • 【Java 注解,自定义注解,元注解,注解本质,注解解析】
  • 染色法判定二分图
  • 自动气象站的主要功能优势
  • Java中实现二维数组(矩阵)的转置
  • Prometheus+Grafana主机运行数据
  • GraphQL在Postman中:释放API查询的强大潜能
  • 大语言模型里的微调vs RAG vs 模板提示词
  • 网络编程:常用网络测试工具
  • mov视频怎么改成mp4?把mov改成MP4的四个方法