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

四川超宇建设集团网站乐陵seo网站优化

四川超宇建设集团网站,乐陵seo网站优化,wordpress 文件加载顺序,wordpress中文名注册std::string的resize与reverse前言1.resize2.reserve前言 在C中我们经常用std::string 来保存字符串#xff0c;其中有两个比较常用但是却平时容易被搞混的两个函数#xff0c;分别是resize和reserve#xff0c;模糊意识里#xff0c;这两个方法都是对std::string的容量或元… std::string的resize与reverse前言1.resize2.reserve前言 在C中我们经常用std::string 来保存字符串其中有两个比较常用但是却平时容易被搞混的两个函数分别是resize和reserve模糊意识里这两个方法都是对std::string的容量或元素进行操作那么这两个函数到底做了什么呢 先声明string中的两个概念capaticy容量和size大小 capaticy容量即容器此处指string容器所拥有的存放多少元素的能力如果把string比作厕所那capaticy就可以理解为厕所有多少个坑位很明显并不一定每个坑都有人蹲着。 size大小即容器内实际存放了多少个元素还是以厕所类比的话就是当前厕所里实际有几个人蹲坑 1.resize constexpr void resize(size_type n); constexpr void resize(size_type n, CharT c);顾名思义resize就是重新规划string的大小如上面声明所说这里的size代表的并不是string容器的容量而是元素的个数比如一个std::string的容量是20即其能最多够放的下20个元素但是它只放了11个那有9个就是空着的这里的size就是11代表实际元素的个数。 这里可以通过std::string的size方法和capacity方法查看容器的元素个数以及容量大小 string s2(hello wrold);cout size: s2.size() endl;cout capacity: s2.capacity() endl;cout s2 endl;size:11 capacity:15 hello wrold可以看到s2内存放了11个元素但是它的容量是15个元素其余4个是空闲的 resize呢其操作的目标就是元素我们可以利用resize来改变容器内元素的个数例如 当参数n的值小于当前容器的容量  这种情况下容器中长度在n之外的部分会被截取掉只保留n长度内的元素但是容器的容量却没有改变更不会出现扩容的状况我们可以通过这段代码验证这一点 string s2(hello wrold);cout size: s2.size() endl;cout capacity: s2.capacity() endl;cout s2 endl; s2.resize(5);//缩小不会改变容量cout size: s2.size() endl;cout capacity: s2.capacity() endl;cout s2 endl;size:11 capacity:15 hello wrold size:5 capacity:15 hello可以看的出来容器内的元素个数变成了5个只有’hello’5个字符了但是其容量还是30也就是在不扩容的情况下其还可以容纳25个元素。 参数n的值大于当前容器的容量  在这种情况下容器为了能够放的下更多的元素会发生扩容扩容之后其容量会比原来大但是原来容器中的元素个数肯定是小于当前容器的容量的此时容器将会把没有用到的空间给初始化用什么初始化呢这就看第二个参数c了如果指定了c则剩余的坑位全用c来初始化如果没有指定呢那就用string的默认初始化了这就意味着这种情况下容器一定是分配了内存并全部发生了初始化的。 我们可以通过下面这段代码感受一下这种情况: string s2(hello wrold);cout size: s2.size() endl;cout capacity: s2.capacity() endl;cout s2 endl;//没有pos默认\0s2.resize(20);//改变size如果容量不够会扩容cout size: s2.size() endl;cout capacity: s2.capacity() endl;cout s2 endl; //以下代码全部源自:https://blog.csdn.net/m0_72964546/article/details/126926073 size:11 capacity:15 hello wrold size:20 capacity:30 hello wrold2.reserve reserve与resize的区别在于reserve只会对string的capacity产生影响其函数原型为 void reserve( size_type n) ;这里n的大小影响着reserve的行为分为n大于当前容量和n小于当前容量两种情况 当n 当前容量时 string容器这时的行为很简单就是什么都不做一切照旧。可以从下面代码中观察出: string s3(hello wrold);cout size: s3.size() endl;cout capacity: s3.capacity() endl;cout s3 endl;s3.reserve(5);cout size: s3.size() endl;cout capacity: s3.capacity() endl;cout s3 endl;size:11 capacity:15 hello wrold size:11 capacity:15 hello wrold当 n当前容量时 这里引用官方文档的一句话 如果n值大于容器现有容量即capacity那么就在自由内存空间为整个容器重新分配一块更大的连续空间【因为vector是顺序容器所以存储空间一定是连续的】然后将容器内所有的有效元素从旧空间的位置全部复制到新空间相应的位置然后释放旧空间并调整容器的元素位置指示器。所以reserve函数的结果只是让容器的冗余容量变大容器的实际大小即元素个数并没有变化。 这里的表述也非常准确了即当n大于容器当前的capacity时会重新找一块比现在大的连续内存空间将所有数据拷贝到新的内存中释放掉旧的内存。这里虽然容器有了更大的空间但是容器内的元素却始终都是原来的元素其数量没有发生变化并且没有被用上的空间虽然分配了内存但是并没有被初始化。 例如 string s4(hello world);cout size: s4.size() endl;cout capacity: s4.capacity() endl;cout s4 endl;s4.reserve(50);cout size: s4.size() endl;cout capacity: s4.capacity() endl;cout s4 endl;size:11 capacity:15 hello world size:11 capacity:50 hello world以上就是本文所要分享的内容希望大家每天坚持进步~
http://www.tj-hxxt.cn/news/217231.html

相关文章:

  • 网站建设与维护 计算机糖果网站建设目的
  • 建设网站需要的步骤成都网络关键词排名
  • 唐山网站制作app北京软件开发哪家好
  • 建设部门网站查询胶南网站建设哪家好
  • 外资企业可以在中国境内做网站吗h5移动网站开发
  • 思茅北京网站建设青岛优化网站关键词
  • 交友免费的网站建设网站做代理需要空间是多少钱
  • 安溪人做的网站天猫网站建设的优势有哪些
  • 北京医疗网站建设公司排名网站开发语言开发
  • 民治网站设计圳网站建设公司中企动力北京分公司
  • 自己做网站需要多少费用iis服务器网站301重定向怎么做
  • 网站开发学什么语言最好网站建设 提案 框架
  • 网站备案麻烦么微信小程序模版
  • 临沂企业建站模板六安市城乡建设网站
  • 做行业网站网络营销成功案例分析其成功原因
  • 网站首页关键词设置黄页推广服务
  • wordpress 做网店昆山网站优化建设
  • 微信h5游戏网站建设.net 网站地图
  • 网站排行宁夏免费建个人网站
  • 云霄网站建设网站网站建设网站
  • 网站后台管理增加功能wordpress怎么更改后台访问地址
  • vfp网站开发网络设计包括哪些方面
  • 江苏省网站建设哪家好找资源的关键词有哪些
  • 网页打不开404一个网站做seo
  • 搭建wordpress网站做网站卖东西赚钱吗
  • 来个网站吧好人一生平安2021武隆网站建设报价
  • 加速百度对网站文章的收录36氪网站是用什么做的
  • 搭建网站需要什么技术盐城做企业网站的价格
  • 本地做网站wordpress cart
  • 网站建设交易食品包装设计公司