名前空間
変種
操作

名前付き要件: RandomAccessIterator

提供: cppreference.com
< cpp‎ | named req
 
 
名前付き要件
 

RandomAccessIterator は定数時間で任意の要素を指す位置に移動できる BidirectionalIterator です。

配列要素へのポインタは RandomAccessIterator のすべての要件を満たします。

[編集] 要件

以下の内容を満たす場合、型 ItRandomAccessIterator を満たします。

さらに、

  • std::iterator_traits<It>::value_type によって表される型 value_type
  • std::iterator_traits<It>::difference_type によって表される型 difference_type
  • std::iterator_traits<It>::reference によって表される型 reference
  • It または const It 型のオブジェクト i, a, b
  • It& 型の値 r
  • difference_type 型の整数 n

が与えられたとき、以下の式が有効でなければならず、指定された効果を持たなければなりません。

戻り値の型 操作的意味論 注釈
r += n It& difference_type m = n;

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

  • n は正でも負でも構いません
  • 計算量は定数時間です (つまり、実装は操作的意味論に示されている while ループを実際に実行してはなりません)
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;

事前条件:

  • a+n==b であるような difference_type 型の値 n が存在する

事後条件:

  • b == a + (b - a)
i[n] reference に変換可能 *(i + n)
a < b 文脈的に bool に変換可能 b - a > 0 厳密な全順序関係:
  • !(a < a)
  • a < b であれば !(b < a) が成り立つ
  • a < b かつ b < c であれば a < c が成り立つ
  • a < b または b < a または a == b
    (これらの式のいずれかひとつだけが真である)
a > b 文脈的に bool に変換可能 b < a a < b と逆の全順序関係
a >= b 文脈的に bool に変換可能 !(a < b)
a <= b 文脈的に bool に変換可能 !(a > b)

上記のルールは RandomAccessIteratorLessThanComparable も実装することを暗に示します。

可変RandomAccessIteratorOutputIterator の要件を追加でサポートする RandomAccessIterator です。

[編集] 関連項目

BidirectionalIterator が定数時間の前進と添字アクセスをサポートするランダムアクセスイテレータであることを指定します
(コンセプト) [edit]