迭代器

迭代器(Iterator)是指针的抽象,它允许程序员以相同的方式处理不同的数据结构(容器)

 

迭代器支持的一些基本操作:

=      迭代器赋值

==    比较迭代器的相等性

!=   比较迭代器的不等性

++    迭代器向后移动

--      迭代器向前移动

*       解引用,返回迭代器指向的元素

 

 

迭代器搭起STL算法和容器之间的桥梁,算法对容器一无所知,他只操作容器的迭代器,间接操作容器

 

 

STL中的五种迭代器:

 

1.输入迭代器

只能一次一个向前读取元素,按此顺序一个个传回元素值

 

表达式                      功能表述

x=*iter                     读取实际元素(只能作为右值)

iter->member       读取实际元素的成员(如果有的话)

++iter                   向前步进(传回新位置)

iter++                   向前步进(传回旧位置)

iter1 == iter2        判断两个迭代器是否相同

iter1 != iter2         判断两个迭代器是否不相等

TYPE(iter)            复制迭代器(copy 构造函数)                          

        

2.输出迭代器

Output迭代器和Input迭代器相反,其作用是将元素值一个个写

 

表达式                  功能表述

*iter = value      将元素写入到迭代器所指位置(只能作为左值)

++iter             向前步进(传回新位置)

iter++             向前步进(传回旧位置)

TYPE(iter)         复制迭代器(copy 构造函数)                     

 

3.前向迭代器

前向迭代器是Input迭代器与Output迭代器的结合,具有Input迭代器的全部功能和Output迭代器的大部分功能

 

表达式                 功能表述

*iter               存取实际元素(可读可写)

iter->member        存取实际元素的成员

++iter              向前步进(传回新位置)

iter++              向前步进(传回旧位置)

iter1 == iter2      判断两个迭代器是否相同

iter1 != iter2      判断两个迭代器是否不相等

TYPE()              产生迭代器(default构造函数)

TYPE(iter)          复制迭代器(copy构造函数)

iter1 == iter2      复制     

       

4.双向迭代器

  Bidirectional(双向)迭代器在Forward迭代器的基础上增加了回头遍历的能力(--)。换言之,它支持递减操作符,用以一步一步的后退操作

 

5.随机访问迭代器

Random Access迭代器在Bidirectional迭代器的基础上再增加随机存取能力。因此它必须提供“迭代器算数运算”(和一般指针“指针算术运算”相当)。也就是说,它能加减某个偏移量、能处理距离(differences)问题,并运用诸如<和>的相互关系操作符进行比较。

 

posted @ 2020-04-23 01:19  坦坦荡荡  阅读(319)  评论(0)    收藏  举报