类别:迭代器 | 组件类型:概念 |
值类型 | 解引用输入迭代器获得的值的类型 |
距离类型 | 用于表示从一个迭代器到另一个迭代器的距离或范围中元素数量的有符号整型类型。 |
X | 输入迭代器模型的类型 |
T | 的类型X |
i, j | 类型为的对象X |
t | 类型为的对象T |
如果迭代器可解引用或超出末尾,则该迭代器为有效。
迭代器i如果存在“下一个”迭代器,即如果++i定义良好,则该迭代器为可递增。超出末尾的迭代器不可递增。
输入迭代器j如果在对i应用运算符++有限次后,i,i == j. [1]
符号[i,j)指的是从i开始直到但不包括j.
的迭代器范围。[i,j)范围i和j都是有效的迭代器,并且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] 不能保证可以两次遍历相同的输入迭代器。