SGI

输入迭代器

类别:迭代器 组件类型:概念

描述

输入迭代器是一种可以解引用以引用某个对象的迭代器,并且可以递增以获得序列中的下一个迭代器。输入迭代器不需要是可修改的。

细化

平凡迭代器.

关联类型

值类型 解引用输入迭代器获得的值的类型
距离类型 用于表示从一个迭代器到另一个迭代器的距离或范围中元素数量的有符号整型类型。

符号

X 输入迭代器模型的类型
T 的类型X
i, j 类型为的对象X
t 类型为的对象T

定义

如果迭代器指向容器的最后一个元素之外,则该迭代器为超出末尾。超出末尾的值是非奇异且不可解引用的。

如果迭代器可解引用或超出末尾,则该迭代器为有效

迭代器i如果存在“下一个”迭代器,即如果++i定义良好,则该迭代器为可递增。超出末尾的迭代器不可递增。

输入迭代器j如果在对i应用运算符++有限次后,ii == j. [1]

符号[i,j)指的是从i开始直到但不包括j.

的迭代器范围[i,j)范围ij都是有效的迭代器,并且j可以从i [2].

到达,则该范围为有效范围

有效表达式
除了在平凡迭代器中定义的表达式外,以下表达式必须有效。 名称 表达式 类型需求
返回类型 ++i   前置递增
后置递增 (void)i++    
后置递增和解引用 *i++   T

表达式语义

除了在平凡迭代器中定义的表达式外,以下表达式必须有效。 名称 前提条件 语义 后置条件
解引用 *t i可递增    
返回类型 ++i i可解引用   i可解引用或超出末尾 [3] [4]
后置递增 (void)i++ i可解引用 等价于(void)++i i可解引用或超出末尾 [3] [4]
后置递增和解引用 *i++ i可解引用 等价于{T t = *i; ++i; return t;} i可解引用或超出末尾 [3] [4]

复杂度保证

所有操作都是摊销常数时间。

不变式

模型

注释

[1] i == j并不意味着++i == ++j.

[2] 有效范围内的每个迭代器[i, j)都可解引用,并且j要么可解引用,要么超出末尾。范围内的每个迭代器都可解引用这一事实源于可递增迭代器必须可解引用的事实。

[3] 执行++i后,不需要i的旧值的副本可解引用,也不需要它们在运算符==.

[4] 不能保证可以两次遍历相同的输入迭代器。

另请参阅

输出迭代器迭代器概述
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息