c++ resizereserve
2024-05-19 14:18:47
resize(),设置大小(size); reserve(),设置容量(capacity); size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。 打个比方:正在建造的一辆公交车,车里面可以设置40个座椅(reserve(40);),这是它的容量,但并不是说它里面就有了40个座椅,只能说明这部车内部空间大小可以放得下40张座椅而已。而车里面安装了40个座椅(resize(40);),这个时候车里面才真正有了40个座椅,这些座椅就可以使用了
reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。
resize是改变容器的大小,且在创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。此时再调用push_back()函数,是加在这个新的空间后面的。
两个函数的参数形式也有区别的,reserve函数之后一个参数,即需要预留的容器的空间;resize函数可以有两个参数,第一个参数是容器新的大小, 第二个参数是要加入容器中的新元素,如果这个参数被省略,那么就调用元素对象的默认构造函数。下面是这两个函数使用例子:
例子1:
vector<int> myVec;
myVec.reserve( 100 ); // 新元素还没有构造,
// 此时不能用[]访问元素
for (int i = 0; i < 100; i++ )
{
myVec.push_back( i ); //新元素这时才构造
}
myVec.resize( 102 ); // 用元素的默认构造函数构造了两个新的元素
myVec[100] = 1; //直接操作新元素
myVec[101] = 2;
c++ resizereserve相关推荐
最新文章
- 网站推广——网站推广专员是如何对竞争对手网站进行分析总结的?
- leetcode算法题--求1+2+…+n
- 三年经验前端社招——腾讯微保
- array_agg_探索强大SQL模式:ARRAY_AGG,STRUCT和UNNEST
- MySQL数据库专家分享资深DBA经验
- 《WCF技术内幕》翻译35:第2部分_第6章_通道:通道功能
- 最详细的wine配置
- 一纬度横直线等于多公里_高中物理必修一、必修二知识点提纲,暑期预习必备...
- # 变转速轴承数据 时频图数据集制作(2)
- python修改pdf内容_python3.6调整字体Python处理pdf文件库 - PyPDF2详解
- 饥荒控制台输入没用_饥荒控制台使用教程
- Macbook安装双系统的方法
- 【Spring源码三千问】Advice、Advisor、Advised都是什么接口?
- 在 Surface 或 Windows 10 中启用和禁用触摸屏
- 联想服务器重装系统按f几,联想笔记本电脑重装系统按F几
- Canva在线免费图表制作工具
- 如何消除应急吸顶灯(楼道灯)的报警长鸣声
- python可视化丨从1896年说起,用数据看 120 年奥运变迁
- 数据结构 实验六 图基本操作的编程实现
- 滑动窗口 Sliding Window