C++语言·vector顺序表

1. vector的介绍

        vector中文为向量、矢量,在计算机这门学科中我们更习惯于叫它 “顺序表” ,我们在C语言的时候就讲过顺序表,并且用数组实现过它的底层逻辑,所以说这也是我们的老朋友了。不过现在它出现在了 STL 中,被封装成了一个容器,更加方便我们的使用。

        官网资料:vector - C++ Reference

        vector是用模板实现的,它其中的成员函数与string的类似,分为迭代器有关的、size有关的、数据元素相关的、修改相关的。

        声明中的 Alloc allocator 是空间配置器,因为有缺省参数allocator<T> ,所以平时可以不给它传参,空间配置器就是内存池,内存池就是用来管理内存的一个概念,现阶段涉及不到。

2. vector的各种接口

2.1 构造函数

        官网资料:vector::vector - C++ Reference

        value_type就是第一个模板参数T        size_type可以相当于无符号整形但它跟迭代器有关

        第一种构造就是不用传参的默认构造,创造一个空的vector容器

        第二种构造是构造一个包含n个元素的容器,每个元素都是value_type类型的val。

        第三种构造是用迭代器在另一个vector中画出一个范围之后拷贝过去构造

        第四种就是拷贝构造

2.2 vector容器的修改操作

        简单说一下吧,其实这些成员函数我们在string中都见过了

        assgin 重新赋值

        push_back 尾插(常用)

                

        pop_back 尾删(常用)

        insert 随机位置插入

        erase 随机位置或范围删除

        swap 交换

        这个swap函数也是vector顺序表容器自己的交换方法。

        clear 清空容器

2.3 vector容器中数据的访问和遍历

        容器数据的访问还是那几样

        方括号重载就不说了。

        at 返回vector中迭代器位置为n的元素的引用。

        front 返回vector容器中首个数据

        back 返回vector容器中尾部数据

        data 返回指向vector容器内部用来存储其拥有的元素的内存数组的指针

        遍历和string类相似,vector容器也是3种遍历方案 operator[ ] 、迭代器遍历 、范围for遍历,其中范围for遍历的底层就是迭代器。

                

        

3. sort补充

        其实之前我们已经在string的第一节中接触过一次sort函数了

        它的第一种重载我们使用过,就是传一段左闭右开的迭代区间 [ first, last ) 然后这个sort就会自动把容器中的数据从小到大排好升序。

        其排序的底层算发是快速排序,关于排序相关内容以及手动实现各种排序详见:数据结构·排序-CSDN博客文章浏览阅读781次,点赞28次,收藏27次。本节讲解了各种排序算法,包括直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序。其中详细讲解了希尔排序、快速排序和归并排序,在用分治思想通过递归实现的同时,还尝试用非递归的方式解决,对于快速排序还介绍了三种优化方案https://blog.csdn.net/atlanteep/article/details/136857179?spm=1001.2014.3001.5501        第二种重载有了一个Compare,我们讲这是一个仿函数,至于仿函数是什么后面的章节会将,我们现在会用这个接口就行。

        还记得我们C语言阶段的排序函数qsort吗,它的最后一个参数是一个函数指针,这个Compare comp也是类似,往这里传一个可调用对象就可以控制排序的规则。

        这个greater就是一个仿函数

        官网资料:greater - C++ Reference

        它是一个用模板写出来的东西功能就是判断前面的数是否大于

                

        返回值是1,0代表真,假,我们在使用这个greater的时候就像在使用一个函数一样,但是它不是函数,它是一个对象

        相对应的还有less用来判断小于

        官网资料:less - C++ Reference

        用在sort种就是排升序

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值