std::input_or_output_iterator
来自cppreference.com
| 在标头 <iterator> 定义
|
||
| template< class I > concept input_or_output_iterator = |
(C++20 起) | |
input_or_output_iterator 概念组成迭代器分类法的基础;每个迭代器类型都满足 input_or_output_iterator 要求。
当且仅当类型可解引用时,仅用于阐述的的概念 /*can-reference*/ 得到满足。
| 本节未完成 原因:是否要求 *i 保持相等性? |
注解
input_or_output_iterator 自身仅指定解引用和自增迭代器的操作。大多数算法会要求额外的操作:
- 对迭代器与哨位的比较(见
sentinel_for); - 从迭代器读取值(见
indirectly_readable及input_iterator); - 向迭代器写入值(见
indirectly_writable及output_iterator); - 一组更丰富的迭代器移动(见
forward_iterator、bidirectional_iterator、random_access_iterator)。
不同于老式迭代器 (LegacyIterator) 要求,input_or_output_iterator 概念不要求可复制性。
示例
最小化的迭代器。
#include <cstddef> #include <iterator> struct SimpleIterator { using difference_type = std::ptrdiff_t; int operator*(); SimpleIterator& operator++(); void operator++(int) { ++*this; } }; static_assert(std::input_or_output_iterator<SimpleIterator>);