Apache C++ Standard Library Reference Guide

## Output Iterators

Library: Iterators

- Local Index
- Summary
- Description
- Key to Iterator Requirements
- Requirements for Output Iterators
- See Also
- Standards Conformance

### Local Index

No Entries

### Summary

A write only, forward moving iterator

### Description

> NOTE -- For a complete discussion of iterators, see the Iterators section of this reference.

Iterators are a generalization of pointers that allow a C++ program to uniformly interact with different data structures. Output iterators are write-only, forward moving iterators that satisfy the requirements listed below. Note that unlike other iterators used with the standard library, output iterators cannot be constant.

### Key to Iterator Requirements

The following key pertains to the iterator requirements listed below:

`a` | values of type `X`
`u` | identifiers
`r` | value of type `X&`
`t` | value of type `T`

### Requirements for Output Iterators

The following expressions must be valid for output iterators:

`X(a)` | copy constructor, `a == X(a)`
`X u(a)` | copy constructor, `u == a`
`X u = a` | assignment, `u == a`
`*a = t` | result is not used
`++r` | returns `X&`
`r++` | return value convertible to const `X&`
`*r++ = t` | result is not used

The only valid use for the `operator *` is on the left-hand side of the assignment statement.

Algorithms using output iterators should be single pass algorithms. That is, they should not pass through the same iterator twice.

### See Also

Iterators, Input Iterators

### Standards Conformance

ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 24.1.2