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

公众号小程序制作平台windows优化大师手机版

公众号小程序制作平台,windows优化大师手机版,个人网站一年多少钱,微信推广平台哪个好目录 一、关于vector 二、vector的相关函数 三、相关函数的使用 ①构造函数 ②size ③[] ​编辑 ④push_back ⑤迭代器iterator ⑥reserve ⑦resize ⑧find ⑨insert ⑩erase ⑪sort 一、关于vector vector比较像数组 观察可知,vector有两个模板参数…

目录

一、关于vector

二、vector的相关函数

三、相关函数的使用

①构造函数

②size

③[]

​编辑

④push_back

⑤迭代器iterator

⑥reserve

⑦resize

⑧find

⑨insert

⑩erase

⑪sort


一、关于vector

vector比较像数组

观察可知,vector有两个模板参数

第一个模板参数是一个数据类型

这里的数据类型可以是int,可以是double,甚至可以是string

第二个模板参数是空间配置器,给了缺省参数,默认用库里的空间配置器,如果有特殊场景需要自己实现,也可以用自己编写的空间配置器

另外,前面学习了string,只要string能够掌握,那么vector也就基本会用了,因为这些容器内部提供的接口都是非常类似的


二、vector的相关函数

vector里是没有find的,之所以没有是因为把find放到一个头文件里的,需要包头文件,即:

#include<algorithm>

三、相关函数的使用

①构造函数

有四种构造函数

第一个是可以用自己的空间配置器进行构造函数初始化

第二个是用n个val初始化,其中size_type也就是size_t,即无符号整型

而value_type是:

看图可知value_type是第一个模板参数typedef的,allocator_type是第二个模板参数typedef的

第三个是迭代器区间构造

第四个是拷贝构造

这是列举的三种构造函数的方式


②size

size就是vector中存储数据的数量

vector的size也和string的size一样,可以用于遍历vector


③[]

[]可以让vector像数组一样去访问

上面的size所举例也用到了[]

[]的返回值的第n个位置的引用

所以返回值可以修改,即:

[]的作用和at几乎一致,但是[]是assert判断是否越界,越界直接终止程序,而at越界则是抛异常进行处理


④push_back

push_back是用于尾插数据


⑤迭代器iterator

迭代器是一个像指针一样的东西

it是自己取的名字,叫什么都行

迭代器都是在内部定义的,所以属于这个类域,因此是vector<int>::iterator调用

当然迭代器也可以修改:

这里的begin和end和string里的一样,就不演示了

当然iterator是正向迭代器,reverse_iterator就是反向迭代器了,如果打印也就是反向

rbegin和rend也就不多说了

当然,范围for也可以用,因为范围for底层就是迭代器实现的


⑥reserve

reserve是用于提前开空间,避免扩容造成的损耗

提前开20个空间,减少扩容损耗


⑦resize

resize是用于提前开空间加初始化


⑧find

这里的find是在头文件algorithm里的,vector并没有提供,是一个函数模板

传一个迭代器区间给它,返回值是迭代器

是左闭右开的区间 

如果没有找到返回的是last,即end()的返回值

所以需要用if语句进行判断,find一般与insert结合起来用,如下图:


⑨insert

insert是用于插入元素

第一种用法就是pos位置插入val,即上面find用法中的举例

第二种是pos位置插入n个val

第三种是pos位置插入迭代器区间,不常见,了解即可


⑩erase

erase是删除数据

erase给出了两种用法,一种是删除pos位置的数据,一种是删除一个迭代器区间的数据

erase也是需要if语句判断返回值是否找到了,如果不判断直接删除,若没有找到,直接删除会报错


⑪sort

sort是排序算法

sort同样不是vector中的,也是包在头文件algorithm中,可以针对各个类型的容器排序

可以传迭代器区间给它即可排序,默认升序,如果想排降序或是自己写一个仿函数作为第三个参数也支持

库里是有两个写好的仿函数,一个less一个greater,less是升序,greater是降序,都是类模板

但是需要注意的是greater是在functional的头文件中 

不写默认是less,即升序,如果想改为降序,在sort的第三个参数传一个greater的匿名对象即可:

当然能排序vector,string也是可以排序的,也是传入string的迭代器区间即可,不同的是如果想排降序,匿名对象中的类型要传char,即sort(s.begin(), s.end(), greater<char>())

这里也可以体验到什么叫泛型编程,我们使用的这个sort,它不管你是什么数据类型,不管升序还是降序,只需要用传入的迭代器去访问,模版的一个体现

http://www.shuangfujiaoyu.com/news/49510.html

相关文章:

  • 网站建设模板谷歌在线浏览入口
  • 邯郸外贸网站建设公司长春seo网站排名
  • 网站服务器在香港南京seo域名
  • 自己做网站可行吗适合推广的app有哪些
  • wordpress 中毒seo搜索引擎优化报价
  • 提供营销网站建设公司seo品牌优化
  • 网站建设翻译英文seo引流什么意思
  • 长沙专业做网站百度sem竞价托管公司
  • 网站开发文档要求学管理培训班去哪里学
  • 鹤壁网站制作网站制作流程
  • 黄石网站建南昌seo快速排名
  • 东莞做营销型网站营销网址
  • 南城网站建设公司如何seo岗位
  • 微名片网站怎么做网站建设方案设计书
  • 温岭专做男鞋批发的网站沈阳百度seo排名优化软件
  • 温州外贸网站制作长沙seo培训
  • 长沙网站制作平台搜狗广告联盟
  • 哪些网站做代理建立网站的主要步骤
  • 中国内销做哪个网站seo自动工具
  • 众筹网站怎么做推广seo优化6个实用技巧
  • 什么网站值得做电商培训视频教程
  • 做视频的网站带模板下载友情链接英文翻译
  • 安阳网站设计多少钱seo排名教程
  • wordpress二级目录seo快排优化
  • 网页和网站有什么分别企业如何进行搜索引擎优化
  • 淘宝建设网站常见问题行业门户网站推广
  • 长沙网站开发微联武汉建站优化厂家
  • 蚌埠市做家教网站百度seo快排软件
  • 一流的做pc端网站北京搜索引擎优化
  • 个人备案网站建设方案书网店seo排名优化