重点建设专业 专题网站,莱芜话题 莱芜在线,悬浮网站右侧带鼠标经过二维码显示特效代码,最新新闻事件今天长沙目录 一、关于vector
二、vector的相关函数
三、相关函数的使用
①构造函数
②size
③[]
编辑
④push_back
⑤迭代器iterator
⑥reserve
⑦resize
⑧find
⑨insert
⑩erase
⑪sort 一、关于vector
vector比较像数组 观察可知#xff0c;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放到一个头文件里的需要包头文件即
#includealgorithm 三、相关函数的使用
①构造函数
有四种构造函数 第一个是可以用自己的空间配置器进行构造函数初始化
第二个是用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是自己取的名字叫什么都行
迭代器都是在内部定义的所以属于这个类域因此是vectorint::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一个greaterless是升序greater是降序都是类模板
但是需要注意的是greater是在functional的头文件中
不写默认是less即升序如果想改为降序在sort的第三个参数传一个greater的匿名对象即可 当然能排序vectorstring也是可以排序的也是传入string的迭代器区间即可不同的是如果想排降序匿名对象中的类型要传char即sort(s.begin(), s.end(), greaterchar())
这里也可以体验到什么叫泛型编程我们使用的这个sort它不管你是什么数据类型不管升序还是降序只需要用传入的迭代器去访问模版的一个体现