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>);