Namespaces
Variants

std:: input_or_output_iterator

From cppreference.net
Iterator library
Iterator concepts
input_or_output_iterator
(C++20)

Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
헤더 파일에 정의됨 <iterator>
template < class I >

concept input_or_output_iterator =
requires ( I i ) {
{ * i } - > /*can-reference*/ ;
} &&

std:: weakly_incrementable < I > ;
(C++20부터)

input_or_output_iterator 개념은 반복자 개념 분류의 기초를 형성합니다. 모든 반복자 타입은 input_or_output_iterator 요구사항을 충족합니다.

설명 전용 개념 /*can-reference*/ 는 해당 타입이 referenceable 일 때에만 만족됩니다.

참고 사항

input_or_output_iterator 자체는 반복자의 역참조 및 증가 연산만을 명시합니다. 대부분의 알고리즘에는 추가 연산이 필요합니다, 예를 들어:

LegacyIterator 요구사항과 달리, input_or_output_iterator 개념은 복사 가능성을 요구하지 않습니다.

* i 는 동등성 보존(equality-preserving)이 요구되지만, weakly_incrementable 에서 요구하는 증분 연산은 그렇지 않습니다.

예제

최소 반복자.

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