1、iterator
iterator可以理解为是一种泛化的指针,其在某些方面类似于下标操作,但是很多容器中我们无法使用下标对容器中的元素进行访问,这时候就需要使用到迭代器。为了更好的使用容器,迭代器起到了连接算法与容器之间的桥梁的作用,当我们使用算法时,需要知道当前算法需要的传来的参数的各种类型,这时候就需要用到iterator的属性来告诉我们这些类型。
iterator有五个类型,五种固有属性。
五种类型:random access ,bidirection,forward,input,output
random access为随机访问,即元素存放在连续空间,支持++ – +n -n的操作
bidirection为双向访问,使用在list,RB_tree实现的数据结构中,其中也重载了自增自建运算符,但是因为其结构并非连续内存,因此其中实现是利用容器内部指针完成。
forward为单向访问,其相比bidirection只能够完成向后访问,并不能前向访问,使用在forward_list 即单向链表中。
input为输入,其只能读取不能完成写操作,且只能一次读取操作
output为输出,其只能写入不能够完成读取,同样只能写入一次
iterator的五种固有属性iterator_traits
其固有属性就是所有迭代器都必须要定义出来的属性ÿ