2010-02-21 15 views
19

¿Qué son iteradores en C++?¿Qué son iteradores, C++?

+0

http: // stackoverflow.com/questions/1064983/different-types-of-iterators/1065528 # 1065528, http://www.sgi.com/tech/stl/Iterators.html –

+1

Esta es una buena fuente de información: http: //www.cs .helsinki.fi/u/tpkarkka/alglib/k06/lectures/iterators.html – Manuel

+0

http://www.cplusplus.com/reference/iterator/ – 7bisso

Respuesta

15

Los iteradores son una forma de atravesar una colección de objetos. Normalmente, le permiten acceder secuencialmente a un contenedor STL (Biblioteca de plantillas estándar) de forma similar al acceso a una matriz C clásica con un puntero. Para acceder a un objeto a través de un iterador, lo desreferencia como un puntero C. Para acceder al siguiente objeto de una colección, use el operador de incremento (++). Algunos contenedores tienen múltiples tipos de iteradores que le permiten recorrer la colección de diferentes maneras.

2

http://en.wikipedia.org/wiki/Iterator

Algo que le permite ir a través de todo en una matriz, una por una.

En C++, creo que estás hablando de "for_each" ... Hasta donde yo sé, C++ en realidad no tiene "foreach" a diferencia de los lenguajes como C#. Sin embargo, la biblioteca de plantillas estándar lo tiene.

+1

Sin duda es más que arreglos, de hecho el objetivo de los iteradores en C++ consiste en abstraer la colección en sí y sus propiedades para que los algoritmos que tratan con iteradores se puedan usar sobre cualquier tipo de colección :) –

1

Representan una posición dentro de una secuencia. Por sí mismos, son poco más que curiosidades, pero cuando se desreferencian, dan como resultado el valor contenido en la secuencia en la posición que representa.

13

Aunque al principio parece bastante obvio, esta es en realidad una pregunta más profunda de lo que pueda imaginarse. Junto con Paul McJones, Alexander Stepanov (diseñador del original, para cualquiera que no lo sepa) lanzó recientemente un libro llamado Elementos de programación (también conocido como EOP). La totalidad del capítulo seis de ese libro está dedicado específicamente a los iteradores, y gran parte del resto del libro también se relaciona estrechamente con los iteradores. Cualquiera que realmente quiera conocer iteradores con todo detalle podría considerar leer este libro.

Advertencia: EOP es no para el corazón débil. Es relativamente corto (~ 260 páginas), pero bastante denso. Hablando desde la experiencia, el principio es un poco desconcertante. Mi reacción inicial al primer capítulo fue más o menos "bueno, esto es tan obvio que apenas vale la pena leer. ¡Empecé a programar antes de la semana pasada, después de todo!"

Afortunadamente, miré los ejercicios e intenté hacer un par, y aunque había pensado en los temas como obvios, los ejercicios exigen pruebas rigurosas. Es como pedirle que pruebe (en un sentido matemático) que el agua está mojada. Terminas necesitando leer el capítulo un par de veces solo para superar tu propia noción preconcebida de que ya sabes las respuestas, para que puedas ver la verdadera pregunta: ¿qué significa realmente "mojado"? ¿Cuáles son las características fundamentales de "humedad"?

+2

Es un placer venir aquí para encontrar respuestas como estas. +1 –

+0

Gracias por el puntero a un libro que debería haber sabido antes (si no se leyó). –

2

De p. 80 de Accelerated C++:

Un iterador es un valor que

  • identifica un contenedor y un elemento en el contenedor
  • nos permite examinar el valor almacenado en ese elemento
  • proporciona operaciones para mover entre elementos en el contenedor
  • Restringe las operaciones disponibles en formas que corresponden a lo que el contenedor puede manejar de manera eficiente