迭代器
迭代器(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)问题,并运用诸如<和>的相互关系操作符进行比较。
浙公网安备 33010602011771号