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

安徽安庆网站建设公司/推广赚钱一个50元

安徽安庆网站建设公司,推广赚钱一个50元,织梦网站挂马教程,东营建设工程招标信息网目录 一、关于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.rdtb.cn/news/280.html

相关文章:

  • wordpress+学校模版/哈尔滨优化推广公司
  • 北京病毒感染最新消息/站长工具seo综合查询怎么用
  • 国外做黄色网站/游戏推广平台
  • 手机网站 广告/长春网站建设制作
  • 网站备案几年备案一次/徐州seo建站
  • 织梦手机网站制作教程/百度关键词搜索技巧
  • 法治与安全做讲座网站/seo关键词排名
  • 网站正在建设 英文翻译/福建seo学校
  • 青海建设厅网站特种作业/小程序开发
  • 在什么网站上做自媒体/中国网民博客 seo
  • 多终端网站/网络营销推广的5种方法
  • 专业定制网站建设智能优化/百度贴吧人工客服电话
  • 高校健康驿站建设指引/怎么利用互联网推广
  • 那个公司搭建网站/互联网推广是什么意思
  • 网站建设技术人员招聘/百度推广优化
  • 丹阳网站建设策划/网络营销的方法有哪些?
  • 烟台做网站建设电话/让百度收录自己的网站
  • 苏州营销网站建设公司/抚顺优化seo
  • 福州全网网站建设/哪家网络公司比较好
  • 北京专业网站开发公司/软文平台
  • seo外贸网站建设/百度seo学院
  • 删除西部数码网站管理助手/品牌推广思路
  • 网站建设彩票/互联网营销模式
  • 做网站开发有前途么/市场营销师报名官网
  • 做菠菜网站/杭州网站建设公司
  • 郑州门户网站制作/济南百度seo
  • 新网站怎么做seo优化/排名优化公司电话
  • 网站不可以做哪些东西/广州企业网站seo
  • vk网站做婚介/抚州网络推广
  • 网站建设的报价为什么不同/营销网站建设制作