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

成都网站推广创新互联四川建设报名系统官网

成都网站推广创新互联,四川建设报名系统官网,商城网站建设软件,自贡网站建设公司结论放前边&#xff1a;resize和reserve都可以给容器扩容&#xff0c;区别在于resize会进行填充&#xff0c;使容器处于满员的状态&#xff0c;即sizecapacity&#xff0c;而reserve不会填充&#xff0c;有size<capacity. 1. size 和 capacity 的区别 size和capacity是容器…

结论放前边:resizereserve都可以给容器扩容,区别在于resize会进行填充,使容器处于满员的状态,即size=capacity,而reserve不会填充,有size<capacity.

1. size 和 capacity 的区别

size和capacity是容器非常重要的两个概念,capacity表示容器的容量,也就是能存储元素的上限数量,size表示容器当前存在多少元素。
所以在多数时候,size和capacity是不相等的,且满足size<=capacity。

2. resize 和 reserve 的区别

了解了size和capacity的区别,接下来就更好理解了。
回顾一下这俩函数的原型:

resize(std::size_t new_size)
reserve(std::size_t new_cap)

std::size_t不重要,当成int看就行。resize和reserve都是容器的成员函数,以obj.resize(n), obj.reseve(n)的形式来调用,如果n小于当前的size,则什么都不干;同样,如果n小于capacity,也不会进行任何操作。
如果n大于当前的size,resize函数会先扩容到n,然后将新增的空间,用默认值填充,相当于resize之后,obj是满的;如果n大于capacity,reserve函数只进行扩容,不做填充。
看个例子:

#include <vector>
#include <iostream>using namespace std;class A {
public:A(){cout<<"A::constructor"<<endl;}void display(){cout<<"dispaly"<<endl;}
};int main() {vector<A> v;v.resize(5);   //进行填充cout << v.capacity() << " " << v.size() << endl;vector<A> x;x.reserve(5);  //不填充cout << x.capacity() << " " << x.size() << endl;
}

运行结果:
在这里插入图片描述可以看到,reisze扩容之后,会进行元素填充,调用了构造函数,而reserve不会。

3. 值得注意的一点

resize和reserve扩容处理的区别,带来了主要问题就是push函数使用问题,比如vector的push_back()函数,如果是resize之后再push_back,容器会继续扩容,因为这时候容器已经满了;如果是reverse之后push_back,则会放到vector现有元素的后边。

#include <vector>
#include <iostream>using namespace std;class A {
public:A(){cout<<"A::constructor"<<endl;}void display(){cout<<"dispaly"<<endl;}
};int main() {vector<A> v;v.resize(5);   //进行填充v.push_back(A());cout << v.capacity() << " " << v.size() << endl;vector<A> x;x.reserve(5);  //不填充x.push_back(A());cout << x.capacity() << " " << x.size() << endl;
}

在这里插入图片描述

http://www.yayakq.cn/news/47494/

相关文章:

  • 怎么上传网站iis怎么免费注册公司
  • 公司网站用什么语言开发厦门百度推广怎么做
  • 东莞做营销型网站网站建设与开发学习
  • wordpress读取txt北京网站优化体验
  • 中国城乡住房和城乡建设部网站首页网站做关键词排名
  • 医院网站建设方案详细正规企业网站开发使用方法
  • seo整站如何优化wordpress优化软件
  • 网站建设公司的销售好做吗瑞昌市建设局网站
  • 广州市网站建设制作费用《网站平台建设》课程实训
  • 无锡哪里有建设网站深圳led网站建设
  • 给别人做彩票网站违法吗网络营销课程建议
  • 毕业设计 建设网站免费公司取名器
  • 南宁信息建设网站asp.net 制作网站开发
  • 网站建设申请报告html网页制作参考文献
  • 为什么谷歌网站打不开万网的网站怎么建设
  • 做企业网站收费河源北京网站建设
  • 企业信息查询网官网太原seo计费管理
  • 常州市新北区建设与管理局网站网页游戏排行2013
  • 高新网站开发多少钱雄安建设集团有限公司网站
  • 网站建设心得感想企业网站建设要求标准说明
  • 大数据平台建站网站建设方案书 腾讯
  • 公司支付网站建设费进什么费用点评类网站建设
  • 国外网站为什么不用备案wordpress数据库加速插件
  • 做dj网站能赚钱吗汕头网站建设哪里找
  • php做网站有哪些好处南宁市流量点击推广平台
  • 做淘客网站用什么服务器好seo文章关键词怎么优化
  • 网站建设规划案例网站设计公司如何盈利
  • 天津市工程建设交易网站查汗国加密软件代理
  • 企业网站源码去一品资源网企业网站的规划与建设
  • WordPress设置腾讯企业邮箱网站优化方案基本流程