Vector&List的使用

来源:互联网 发布:网络用语吃鸡什么意思 编辑:程序博客网 时间:2024/05/29 04:12

关于vector的介绍可以分为成员类型、迭代器、元素访问、构造函数、堆栈操作、表操作、大小和容量、协助函数、以及vector等许多方面,但是本次主要写的是关于如何使用vector。
1.每次使用vector时需要包含vector的头文件,在定义一个vector时我们会传一个参数类型,比如int、char等内部类型,也可以是自定义类型,但是我们需要知道的是其实vector的模板是有两个参数的,如图:
图一
可以发现vector模板有两个参数,只是第二个是缺省参数。
2.vector的本质上就是一个可以动态增容的数组,所以其中最为常用的就是对[]的重载,这样可以使人们更加方便的使用下标来操作数组,但是关于[]的重载也存在一定的问题,就是vector对于下标范围不会进行检查,就算是你的下标超出范围依旧可以使用,所以另有一个成员函数at就是为了弥补这种缺陷。并且还有一些函数辅助使用,如front(),back(),data(),分别是返回第一个元素的值和最后一个元素的值。
3.每一个容器都存在迭代器,vector也支持,vector的迭代器可以说是非常的简单,其中就包含begin(),end()两个最常见的迭代器函数,还有静态的cbegin()和cend()函数和两个反向操作函数rbegin()和rend()。
4.因为vector是一个有序的容器,所以在某种特定时间也可以作为堆栈甚至是表来操作,所以为了更接近堆栈的特征,vector也包含了push_back(),pop_back()等函数,还有关于表操作的insert(),erase()的函数,还有clear(),swap()两个函数,可以说vector是非常全面的一个容器。
5.关于大小和容量的问题,vector也有许多成员函数,size(),capacity(),empty()等常见函数还有两个比较容易混淆的两个函数resize()和reserver(),两个函数最本质的区别就是前者是改变函数的size,后者则是改变函数capacity。
6.最后就是关于赋值运算符的重载,并且还有一系列比较运算符的重载。
LIst
Vector是STL的一个标准容器,其本质上就是一个数组,所以在删除插入等操作中会有很大的缺陷,所以同样STL中也有一个也有一个容器就是list,list的本质就是一个双向链表。所以使用list时可以与vector对比进行使用。
1.因为list时链表结构所以相比vector在搜索时非常麻烦,所以list并没有进行运算符[]的重载。
2.在迭代器上相比于vector,list还增加了两个函数就是静态的反向操作,分别是crbegin()和crend()。
3.对于堆栈的操作,list还加入了push_front()和pop_front()。
4.容量和大小方面去除了capacity函数。
5.最后是一些list所特有的函数,splice()函数的作用就是将两个链表连接,remove()用来删除某些特殊的满足某些特定条件的元素,unique()函数用来删除某些连续的满足某些特定条件的元素。

原创粉丝点击