C++ Iterator 库 - input_iterator_tag
描述
它用于将迭代器的类别标识为输入迭代器,并且所有输入迭代器至少支持以下操作之一。
C++98
属性 | 有效的表达方式 |
---|---|
它是可复制构造、可复制分配和可破坏的 | X b(a); b = a; |
可以使用等式/不等式运算符来比较它的等价性 (如果两个迭代器都在 in domain 中,则有意义)。 |
a == b a != b |
它可以作为 rvalue 被取消引用(如果处于 可取消引用状态)。 | *a a->m |
它可以递增(如果处于可取消引用状态)。 结果也是 dereferenceable 或 past-the-end 迭代器。 之前的迭代器值在增加之后不需要是可解引用。 |
++a (void)a++ *a++ |
它的值类型不需要是可赋值的 | t = u not required |
C++11
属性 | 有效的表达方式 |
---|---|
它是可复制构造、可复制赋值和可破坏的 | X b(a); b = a; |
可以使用等式/不等式运算符来比较它的等价性 (如果两个迭代器都在 in domain 中,则有意义)。 |
a == b a != b |
它可以作为 rvalue 被取消引用(如果处于 可取消引用状态)。 | *a a->m |
它可以递增(如果处于可取消引用状态)。 结果也是 dereferenceable 或 past-the-end 迭代器。 之前的迭代器值在增加之后不需要是可解引用。 |
++a (void)a++ *a++ |
它的值类型不需要是可赋值的 | t = u not required |
左值是可交换的。 | swap(a,b) |
声明
以下是 std::input_iterator_tag 的声明。
C++11
struct input_iterator_tag {};