C++ 概念: InputIterator

来自cppreference.com
< cpp‎ | concept
 
 
 

输入迭代器 (InputIterator) 是能从所指向元素读取的迭代器 (Iterator) 。输入迭代器 (InputIterator) 仅保证单趟算法的合法性:一旦 InputIterator i 被自增,则所有其先前值的副本都可能变得非法。

[编辑] 要求

若满足下列条件,则类型 It 满足输入迭代器 (InputIterator)

并给定

则下列表达式必须合法且拥有其指定的效应

表达式 返回 等价表达式 注意
i != j 可按语境转换到 bool !(i == j) 前提条件(i, j)== 的定义域中。
*i reference ,可转换到 value_type i == j(i, j)== 的定义域中,则这等价于 *j

前提条件i 可解引用。

表达式 (void)*i, *i 等价于 *i

i->m (*i).m 前提条件i 可解引用。
++i It&

前提条件i 可解引用

后置条件i 可解引用或 i 为尾后。

后置条件:任何 i 先前的值副本不要求可解引用或在 == 的定义域内。

(void)i++ (void)++i
*i++ 可转换到 value_type value_type x = *i;

++i;

return x;

[编辑] 注意

“在 == 的定义域内”表示二个迭代器的值间定义了相等比较。对于输入迭代器,相等比较不需要对所有值定义,且 == 的定义域中的值的集合可以随时改变。

输入迭代器的 reference 类型不与向前迭代器 (ForwardIterator) 一样必须是引用类型:解引用输入迭代器可以返回代理对象或以值返回 value_type 本身(如在 std::istreambuf_iterator 的情况)。

[编辑] 参阅

指定类型为输入迭代器,即能读其所引用值,且它能前后自增
(概念) [编辑]