C++ 概念: RandomAccessIterator

来自cppreference.com
< cpp‎ | concept
 
 
 

随机访问迭代器 (RandomAccessIterator) 是能在常数时间内移动到指向任何元素的双向迭代器 (BidirectionalIterator) 。

指向数组元素的指针满足所有随机访问迭代器 (RandomAccessIterator) 的要求。

[编辑] 要求

类型 It 满足随机访问迭代器 (RandomAccessIterator) ,若

且给定

  • value_typestd::iterator_traits<It>::value_type 所指代的类型
  • difference_typestd::iterator_traits<It>::difference_type 所指代的类型
  • referencestd::iterator_traits<It>::reference 所指代的类型
  • iabItconst It 类型的对象
  • rIt& 类型的值
  • ndifference_type 类型的整数

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

表达式 返回类型 操作语义 注意
r += n It& difference_type m = n;

if (m >= 0) while (m--) ++r;
else while (m++) --r;
return r;

  • n 可为正或负
  • 复杂度为常数(即实现不能按操作语义所示实际执行循环)
a + n

n + a

It It temp = a;

return temp += n;

  • n 可为正或负
  • a + n == n + a
r -= n It& return r += -n; n 的绝对值必须在 difference_type 的可表示值范围内。
i - n It It temp = i;

return temp -= n;

b - a difference_type return n;

前置条件:

  • 存在 difference_type 类型的值 n 满足 a+n==b

后置条件:

  • b == a + (b - a).
i[n] 可转换到 reference *(i + n)
a < b 可语境转换到 bool b - a > 0 严格全序关系:
  • !(a < a)
  • a < b!(b < a)
  • a < bb < ca < c
  • a < bb < aa == b
    (表达式恰有一者为 true )
a > b 可按语境转换到 bool b < a a < b 相反的全序关系
a >= b 可按语境转换到 bool !(a < b)
a <= b 可按语境转换到 bool !(a > b)

上述规则隐含了随机访问迭代器 (RandomAccessIterator) 亦实现可比较小于 (LessThanComparable) 。

可变随机访问迭代器 (RandomAccessIterator) 是满足输出迭代器 (OutputIterator) 要求的随机访问迭代器 (RandomAccessIterator) 。

[编辑] 参阅