2012-02-23 15 views
5

En el New Iterator Concepts standard proposal, no puedo descifrar ninguna diferencia útil entre un iterador de pase único y un iterador de reenvío directo.¿Cuál es la diferencia entre un iterador de pase único de Boost y un iterador de recorrido hacia adelante?

¿La "Aserción/Nota" para la fila "++ r" en la tabla de Reenvío hacia adelante implica que los Iteradores de Transmisión Directa son copiables, mientras que los Iteradores de Pase Único no?

Además, ¿por qué la capacidad adicional de construir por defecto hace que un modelo de iterador se desplace hacia adelante? ¿Cuál es el razonamiento?

+0

No estoy seguro si está duplicado, pero parece estar cerca, * muy * cerca: [¿Cuál es la diferencia entre los iteradores de entrada y los iteradores de solo lectura hacia adelante?] (Http://stackoverflow.com/q/8869104/500104) – Xeo

+0

Gracias para el enlace, @Xeo. En aras de la claridad, agradecería una afirmación explícita de que su respuesta a esa pregunta también se aplica a los nuevos conceptos de iterador, ya que la traducción de antiguo a nuevo no es estrictamente uno a uno. ¿Puedes confirmar que aplica? – FactualHarmony

Respuesta

4

La idea del Single Pass Iterator es que tiene menos requisitos que un iterador Forward Traversal. Eso hace posible crear uno para algunos casos en los que el pase múltiple simplemente no es posible.

Think console input. Incluso si pudiera hacer una copia del iterador, eso no lo ayudaría a recuperar la entrada del teclado anterior.

+0

¿Tengo razón en entender que "multipaso" significa efectivamente "desreferenciación más de una vez sin incrementar"? – FactualHarmony

+0

No, el paso múltiple significa atravesar la secuencia más de una vez. –

Cuestiones relacionadas