Namespaces
Variants

C++ named requirements: LegacyOutputIterator

From cppreference.net
C++ named requirements

LegacyOutputIterator 는 가리키는 요소에 기록할 수 있는 LegacyIterator 입니다.

LegacyOutputIterator 를 구현하는 타입의 예시로는 std::ostream_iterator 가 있습니다.

LegacyForwardIterator , LegacyBidirectionalIterator , 또는 LegacyRandomAccessIterator 가 자체 요구사항에 추가로 LegacyOutputIterator 요구사항을 만족할 경우, 이를 mutable 이라고 설명합니다.

목차

요구사항

타입 X 는 다음 조건을 만족할 때 LegacyOutputIterator 를 만족합니다

  • 타입 X LegacyIterator 를 만족함
  • X 는 클래스 타입 또는 포인터 타입임

그리고, 주어진

  • o , 출력 반복자에 기록 가능한 어떤 타입의 값 (여러 타입이 기록 가능할 수 있음, 예를 들어 operator = 이 템플릿일 수 있음. 입력 반복자와 같은 value_type 개념이 존재하지 않음)
  • r , X 타입의 lvalue,

다음 표현식들은 유효해야 하며 지정된 효과를 가져야 합니다

표현식 반환값 동등한 표현식 사전 조건 사후 조건 참고 사항
* r = o (사용되지 않음) r 역참조 가능 r 증가 가능 이 연산 후 r 은 역참조 가능할 필요가 없으며, r 의 이전 값 복사본들은 더 이상 역참조 가능하거나 증가 가능할 필요가 없습니다.
++ r X & r 증가 가능 r ++ r 는 동일한 반복자 객체를 지정하며, r 는 역참조 가능하거나 past-the-end 상태임 이 연산 후 r 는 증가 가능할 필요가 없으며, r 의 이전 값 복사본들은 더 이상 역참조 가능하거나 증가 가능할 필요가 없습니다.
r ++ 변환 가능 const X & X temp = r ;

++ r ;
return temp ;

* r ++ = o (사용되지 않음) * r = o ;

++ r ;

참고 사항

출력 반복자와 함께 operator * 의 유일한 올바른 사용법은 대입 연산자의 왼쪽에 위치하는 것입니다: operator * 는 프록시 객체를 반환할 수 있으며, 이는 멤버 operator = (템플릿일 수 있음)를 정의합니다.

출력 반복자에 대해서는 동등성과 비동등성이 정의되지 않을 수 있습니다. operator == 가 정의되어 있더라도, x == y ++ x == ++ y 를 함의하지는 않을 수 있습니다.

동일한 출력 반복자 값에 대한 할당은 한 번만 발생합니다: 출력 반복자에 대한 알고리즘은 단일 패스 알고리즘이어야 합니다.

출력 반복자를 통한 할당은 증가와 번갈아 수행될 것으로 예상됩니다. 이중 증가는 정의되지 않은 동작입니다(C++ 표준은 현재 STL 문서와 반대로 이중 증가가 지원된다고 명시하고 있으며, 이는 LWG 이슈 2035 에 해당합니다).

순수 출력 전용 반복자는 iterator_traits < X > :: value_type , iterator_traits < X > :: difference_type , iterator_traits < X > :: pointer , 그리고 iterator_traits < X > :: reference void 로 선언하는 것이 허용됩니다 ( std::back_insert_iterator 와 같은 반복자들이 바로 그렇게 합니다 difference_type 을 제외하고, 이제는 std::output_iterator 를 충족하도록 정의됩니다 (C++20부터) ).

표준 라이브러리

다음 표준 라이브러리 반복자들은 전방 반복자가 아닌 출력 반복자입니다:

std::basic_ostream 에 쓰기를 수행하는 출력 반복자
(클래스 템플릿)
std::basic_streambuf 에 쓰기를 수행하는 출력 반복자
(클래스 템플릿)
컨테이너에 삽입하기 위한 반복자 어댑터
(클래스 템플릿)
컨테이너의 끝에 삽입하기 위한 반복자 어댑터
(클래스 템플릿)
컨테이너의 앞에 삽입하기 위한 반복자 어댑터
(클래스 템플릿)

참고 항목

주어진 값 타입에 대해 해당 타입이 출력 반복자임을 명시합니다. 즉, 해당 타입의 값을 쓸 수 있으며 사전 증가와 사후 증가가 모두 가능함
(concept)
Iterator library 반복자, 반복자 특성, 어댑터 및 유틸리티 함수에 대한 정의를 제공합니다