Boost C++ 库

……是世界上最受尊敬、设计最精妙的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

Concept InputIterator - Boost C++ 函数库
PrevUpHomeNext

Concept InputIterator

InputIterator

描述

输入迭代器(Input iterator)是一个可以遍历一系列值的迭代器。它只能单次通过(不能重复使用迭代器的旧值),并且是只读的。

输入迭代器代表序列中的一个位置。因此,迭代器可以指向序列中的某个元素(在解引用时返回值,并且是可递增的),或者指向序列末尾(不可解引用或递增)。

相关类型

  • value_type

    std::iterator_traits<Iter>::value_type

    迭代器的值类型(不一定是 *i 返回的值)

  • difference_type

    std::iterator_traits<Iter>::difference_type

    迭代器的差值类型

  • category

    std::iterator_traits<Iter>::iterator_category

    迭代器的类别

符号约定

Iter
InputIterator 概念中扮演迭代器类型角色的类型。
i, j
Iter 类型的对象
x
value_type 类型的对象

类型表达式

类别标签

category 必须派生自 std::input_iterator_tag,是 DefaultConstructible 的一个模型,并且是 CopyConstructible 的一个模型。

值类型可复制构造

value_type 必须是 CopyConstructible 的一个模型。

差值类型的属性

difference_type 必须是 SignedInteger 的一个模型。

有效表达式

名称 表达式 类型 前置条件 语义 后置条件

解引用

*i

可转换为 value_type

i 可递增(未超出末尾)

   

前置自增

++i

Iter &

i 可递增(未超出末尾)

   

后置自增

i++

i 可递增(未超出末尾)

等同于 (void)(++i)

i 可解引用或超出末尾

后置自增和解引用

*i++

可转换为 value_type

i 可递增(未超出末尾)

等同于 {value_type t = *i; ++i; return t;}

i 可解引用或超出末尾

复杂度

所有迭代器操作都必须是摊销常数时间。

模型

  • std::istream_iterator

PrevUpHomeNext