C++ 概念: ForwardIterator

来自cppreference.com
< cpp‎ | concept
 
 
 

向前迭代器ForwardIterator)是一种能从所指向元素读取数据的迭代器 (Iterator) 。

不同于输入迭代器 (InputIterator) 和输出迭代器 (OutputIterator) ,它能被用于多趟算法。

目录

[编辑] 要求

若有下列条件,则类型 It 满足向前迭代器(ForwardIterator

  • 类型 It 满足输入迭代器 (InputIterator)
  • 类型 It 满足可默认构造 (DefaultConstructible)
  • 类型 It 的对象提供后述的多趟保证
  • 类型 std::iterator_traits<It>::reference 必须恰为
  • It 满足输出迭代器 (OutputIterator) ( It 可变)则为 T&
  • 否则为 const T&It 为常),
(其中 Tstd::iterator_traits<It>::value_type 所指代的类型)
  • 等于和不等比较定义于同一底层序列上的所有迭代器和值初始化迭代器 (C++14 起)

而且,给定

  • i ,类型 It 的可解引用迭代器
  • referencestd::iterator_traits<It>::reference 所指代的类型

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

表达式 返回类型 等价表达式 注意
i++ It It ip=i; ++i; return ip;
*i++ reference

一个可变向前迭代器(ForwardIterator)是一个附加满足输出迭代器 (OutputIterator) 要求的向前迭代器(ForwardIterator)。

[编辑] 多趟保证

给定 ab ,类型 It 的可解引用迭代器

  • ab 比较相等( a == b 可语境转换到 true ),则要么都是不可解引用,要么 *a*b 是绑定到同一对象的引用
  • 通过可变 ForwardIterator 迭代器赋值不能非法化该迭代器(隐含地因为 reference 定义为真引用)
  • 自增 a 的副本不改变从 a 读取的值(正式而言,要么 It 是无修饰指针类型,要么表达式 (void)++It(a), *a 等价于表达式 *a
  • a == b 隐含 ++a == ++b

单独迭代器

一个值初始化的向前迭代器(ForwardIterator)表现类似某些未指定空容器的末尾后迭代器:它与同类型的所有值初始化的向前迭代器(ForwardIterator)比较相等。
(C++14 起)

[编辑] 参阅