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相关推荐

最新文章

  1. 网站推广——网站推广专员是如何对竞争对手网站进行分析总结的?
  2. leetcode算法题--求1+2+…+n
  3. 三年经验前端社招——腾讯微保
  4. array_agg_探索强大SQL模式:ARRAY_AGG,STRUCT和UNNEST
  5. MySQL数据库专家分享资深DBA经验
  6. 《WCF技术内幕》翻译35:第2部分_第6章_通道:通道功能
  7. 最详细的wine配置
  8. 一纬度横直线等于多公里_高中物理必修一、必修二知识点提纲,暑期预习必备...
  9. # 变转速轴承数据 时频图数据集制作(2)
  10. python修改pdf内容_python3.6调整字体Python处理pdf文件库 - PyPDF2详解
  11. 饥荒控制台输入没用_饥荒控制台使用教程
  12. Macbook安装双系统的方法
  13. 【Spring源码三千问】Advice、Advisor、Advised都是什么接口?
  14. 在 Surface 或 Windows 10 中启用和禁用触摸屏
  15. 联想服务器重装系统按f几,联想笔记本电脑重装系统按F几
  16. Canva在线免费图表制作工具
  17. 如何消除应急吸顶灯(楼道灯)的报警长鸣声
  18. python可视化丨从1896年说起,用数据看 120 年奥运变迁
  19. 数据结构 实验六 图基本操作的编程实现
  20. 滑动窗口 Sliding Window

热门文章

  1. 【高精度】被限制的加法
  2. Ocelot + Consul实践
  3. 2022-2028年中国石油套管行业市场研究及前瞻分析报告
  4. 2022-2028年中国K酸行业发展现状及前瞻分析报告
  5. retrofit 源码分析
  6. 设计模式---(设计原则)面向对象设计原则
  7. C++中模块(Dll)对外暴露接口的方式
  8. UESTC 1811 Hero Saving Princess
  9. c++标准库 及 命名空间std
  10. erdas几何校正_ERDAS遥感图像的几何校正