Forward Iterator Both an input and output iterator Dereference and increment don't have to alternate Allows multipass algorithms p = q; ++q; *p = x; does what it should *q is not modified