<iterator>

std::random_access_iterator_tag

struct random_access_iterator_tag {};
隨機訪問迭代器類別
用於標識迭代器類別的空類隨機訪問迭代器

隨機訪問迭代器


隨機訪問迭代器是指可以用於訪問相對於其指向元素的任意偏移位置的元素,功能與指標相同。

隨機訪問迭代器在功能上是最完整的迭代器。所有指標型別也是有效的隨機訪問迭代器

不存在單一型別的隨機訪問迭代器:每個容器都可以定義自己的特定迭代器型別,以遍歷它並訪問其元素。但所有隨機訪問迭代器至少支援以下操作:

屬性有效的表示式
可以預設構造複製構造複製賦值析構X a;
X b(a);
b = a;
可以使用相等/不等運算子進行等價比較
(當兩個迭代器值指向相同的底層序列時才有意義)。
a == b
a != b
可以作為右值解引用(如果處於可解引用狀態)。*a
a->m
對於可變迭代器非 const 迭代器
可以作為左值解引用(如果處於可解引用狀態)。
*a = t
可以遞增(如果處於可解引用狀態)。
結果是也可解引用越界迭代器。
兩個相等的迭代器,在都遞增後仍然相等。
++a
a++
*a++
可以遞減(如果存在可解引用的迭代器值在其前面)。
--a
a--
*a--
支援迭代器與整數值之間的算術運算子+-,或兩個迭代器之間的減法。a + n
n + a
a - n
a - b
可以與不等關係運算符(<><=>=)進行比較。a < b
a > b
a <= b
a >= b
支援複合賦值運算+=-=a += n
a -= n
支援偏移解引用運算子([]a[n]
屬性有效的表示式
可以預設構造複製構造複製賦值析構X a;
X b(a);
b = a;
可以使用相等/不等運算子進行等價比較
(當兩個迭代器值指向相同的底層序列時才有意義)。
a == b
a != b
可以作為右值解引用(如果處於可解引用狀態)。*a
a->m
對於可變迭代器非 const 迭代器
可以作為左值解引用(如果處於可解引用狀態)。
*a = t
可以遞增(如果處於可解引用狀態)。
結果是也可解引用越界迭代器。
兩個相等的迭代器,在都遞增後仍然相等。
++a
a++
*a++
可以遞減(如果存在可解引用的迭代器值在其前面)。
--a
a--
*a--
支援迭代器與整數值之間的算術運算子+-,或兩個迭代器之間的減法。a + n
n + a
a - n
a - b
可以與不等關係運算符(<><=>=)進行比較。a < b
a > b
a <= b
a >= b
支援複合賦值運算+=-=a += n
a -= n
支援偏移解引用運算子([]a[n]
左值是可交換的swap(a,b)

其中 X隨機訪問迭代器型別ab 是該迭代器型別的物件,n 是其差值型別的值,而 t 是迭代器型別所指向的型別(或可以賦給由 X 型別物件解引用返回的左值的任何其他型別)的物件。

常量迭代器 是不滿足輸出迭代器要求的迭代器;解引用它們會得到對常量元素的引用(例如 const T&)。

另見