# std::experimental::ranges::input_iterator_tag, std::experimental::ranges::output_iterator_tag, std::experimental::ranges::forward_iterator_tag, std::experimental::ranges::bidirectional_iterator_tag, std::experimental::ranges::random_access_iterator_tag

< cpp‎ | experimental‎ | ranges

定义于头文件 `<experimental/ranges/iterator>` |  |
struct input_iterator_tag { }; |  |
struct output_iterator_tag { }; |  |
struct forward_iterator_tag : public input_iterator_tag { }; |  |
struct bidirectional_iterator_tag : public forward_iterator_tag { }; |  |
struct random_access_iterator_tag : public bidirectional_iterator_tag { }; |  |

定义迭代器的类别。每个标签是空类型，且对应五个迭代器类别之一：

- `input_iterator_tag` 对应 `InputIterator` 。
- `forward_iterator_tag` 对应 `ForwardIterator` 。
- `bidirectional_iterator_tag` 对应 `BidirectionalIterator` 。
- `random_access_iterator_tag` 对应 `RandomAccessIterator` 。
- `output_iterator_tag` 对应 `OutputIterator` ；它不被使用，仅因后兼容性提供。

迭代器类别标签携带信息，能以之为该类别所隐含的特定要求集选择最有效的算法。然而更好的是基于概念的重载。

对每个 `InputIterator` 类型 `I` ，必须定义 ranges::iterator_category_t<I> 为描述该迭代器行为的最特定的类别标签的别名。

### 示例

| 本节未完成 原因：暂无示例

### 参阅

input_iterator_tag output_iterator_tag forward_iterator_tag bidirectional_iterator_tag random_access_iterator_tag contiguous_iterator_tag (C++20) | 用于指示迭代器类别的空类类型 (类)
iterator_traits | 汇集迭代器的关联类型的兼容性特性类 (别名模板)