C++语言程序设计 迭代器的概念图 输入迭代器 输出迭代器 (Input Iterator) (Output Iterator) 代 前向迭代器(Forward Iterator) 双向迭代器(Bidirectional Iterator) 随机访间迭代器(Random Access Iterator) 11
C++语言程序设计 迭代器的概念图 11 输入迭代器 (Input Iterator) 输出迭代器 (Output Iterator) 前向迭代器(Forward Iterator) 双向迭代器(Bidirectional Iterator) 随机访问迭代器(Random Access Iterator) 迭代器
C++语言程序设计 迭代器支持的操作 ●迭代器是泛化的指针,提供了类似指 迭 针的操作(诸如++、*、>运算符) 代 ●所有迭代器具备的通用功能: 器 -++p1指向下一个元素,返回值为p1的 引用 -p1+返回类型不确定 米
C++语言程序设计 迭代器支持的操作 迭代器是泛化的指针,提供了类似指 针的操作(诸如++、 * 、->运算符) 所有迭代器具备的通用功能: – ++p1 指向下一个元素,返回值为p1的 引用 – p1++ 返回类型不确定 12 迭代器
C++语言程序设计 输入迭代器 ·输入迭代器:允许从序列中读取数据, 如输入流迭代器。 迭 一支持对序列进行不可重复的单向遍历 代 ·在通用功能外,所具备的功能: 器 -p1==p2 -p1I=p2等价于I(p1=p2) -*p1获取输入迭代器所指向元素的值 p1->m等价于(*p1).m -p1+返回值为T=p1:+p1:eun球米 13
C++语言程序设计 输入迭代器 输入迭代器:允许从序列中读取数据, 如输入流迭代器。 – 支持对序列进行不可重复的单向遍历 在通用功能外,所具备的功能: – p1 == p2 – p1 != p2 等价于 !(p1 == p2) – *p1 获取输入迭代器所指向元素的值 – p1->m 等价于(*p1).m – *p1++ 返回值为{T t=*p1; ++p1; return t;} 13 迭代器
C++语言程序设计 输出迭代器 ● 输出迭代器:允许向序列中写入数据, 如输出流迭代器 迭 - 支持对序列进行单向遍历 代 ·在通用功能外,所具备的功能: 器 *p1=t向迭代器指示位置写入元素t,返回 类型不确定 *p1+=t等价于*p1=t;++p1;},返回值类 型不确定 写入元素的操作和使用”+”白增操泌米 ● 须交替进行 4
C++语言程序设计 输出迭代器 输出迭代器:允许向序列中写入数据, 如输出流迭代器 – 支持对序列进行单向遍历 在通用功能外,所具备的功能: – *p1 = t 向迭代器指示位置写入元素t,返回 类型不确定 – *p1++ = t 等价于{*p1=t; ++p1;},返回值类 型不确定 写入元素的操作和使用”++”自增操作必 须交替进行 14 迭代器
C++语言程序设计 前向迭代器 ● 前向迭代器:既是输入迭代器又是输出 迭代器,支持数据读取和写入 迭 一支持对序列进行可重复的单向遍历 代 。在输入输出迭代器功能外: 器 -*p1返回T&类型 p1++返回类型为P,值为Pp2=p1;+p1; return p2;} ·不再有输出迭代器关于“自增操作和写 入操作交替进行”的限制
C++语言程序设计 前向迭代器 前向迭代器:既是输入迭代器又是输出 迭代器,支持数据读取和写入 – 支持对序列进行可重复的单向遍历 在输入/输出迭代器功能外: – *p1 返回T&类型 – p1++ 返回类型为P,值为{P p2=p1; ++p1; return p2;} 不再有输出迭代器关于“自增操作和写 入操作交替进行”的限制 15 迭代器