C++ Iterator 库 - random_access_iterator_tag
描述
它用于标识迭代器的类别,并且随机访问迭代器至少支持以下操作之一。
C++98
属性 | 有效的表达方式 |
---|---|
它是一个可默认构造、可复制构造、可复制赋值和可破坏的 | X a; X b(a); b = a; |
可以使用等式/不等式运算符来比较它的等价性 (当两个迭代器值迭代相同的底层序列时有意义)。 |
a == b a != b |
它可以作为 rvalue 被取消引用(如果处于 可取消引用状态)。 | *a a->m |
对于可变迭代器(非常量迭代器): 可以作为 lvalue 解引用(如果处于 可解引用状态)。 |
*a = t |
它可以递增(如果处于可取消引用状态)。 结果也是 dereferenceable 或 past-the-end 迭代器。 两个比较相等的迭代器,都增加后继续比较相等。 |
++a a++ *a++ |
它可以递减(如果 dereferenceable 迭代器值在它之前)。 |
--a a-- *a-- |
支持迭代器和整数值之间的算术运算符 + 和 - 或从另一个迭代器中减去一个迭代器。 | a + n n + a a - n a - b |
可以与不等式关系运算符进行比较 (<, >, <= and >=). | a < b a > b a <= b a >= b |
支持复合赋值操作 += 和 -= | a += n a -= n |
支持偏移解引用运算符 ([]) | a[n] |
C++11
属性 | 有效的表达方式 |
---|---|
它是可默认构造、可复制构造、可复制分配和可破坏的 | X a; X b(a); b = a; |
可以使用等式/不等式运算符来比较它的等价性 (当两个迭代器值迭代相同的底层序列时有意义)。 |
a == b a != b |
它可以作为 rvalue 被取消引用(如果处于 可取消引用状态)。 | *a a->m |
对于可变迭代器(非常量迭代器): 可以作为 lvalue 解引用(如果处于 可解引用状态)。 |
*a = t |
它可以递增(如果处于可取消引用状态)。 结果也是 dereferenceable 或 past-the-end 迭代器。 两个比较相等的迭代器,都增加后继续比较相等。 |
++a a++ *a++ |
它可以递减(如果 dereferenceable 迭代器值在它之前)。 |
--a a-- *a-- |
It 支持迭代器和整数值之间的算术运算符 + 和 - 或从另一个迭代器中减去一个迭代器。 | a + n n + a a - n a - b |
It 可以与不等式关系运算符进行比较 (<, >, <= and >=). | a < b a > b a <= b a >= b |
It 支持复合赋值操作 += 和 -= | a += n a -= n |
It 支持偏移解引用运算符 ([]) | a[n] |
Lvalues are swappable. | swap(a,b) |
声明
以下是 std::random_access_iterator_tag 的声明。
C++11
struct random_access_iterator_tag {};