iterador


En la programación de computadoras , un iterador es un objeto que permite a un programador atravesar un contenedor , particularmente listas . [1] [2] [3] A menudo se proporcionan varios tipos de iteradores a través de la interfaz de un contenedor . Aunque la interfaz y la semántica de un iterador dado son fijas, los iteradores a menudo se implementan en términos de las estructuras subyacentes a la implementación de un contenedor y, a menudo, están estrechamente acoplados al contenedor para permitir la semántica operativa del iterador. Un iterador realiza el recorrido y también da acceso a los elementos de datos en un contenedor, pero no realiza por sí mismoiteración (es decir, no sin cierta libertad significativa tomada con ese concepto o con un uso trivial de la terminología) [ cita requerida ] .

Un iterador tiene un comportamiento similar al de un cursor de base de datos . Los iteradores datan del lenguaje de programación CLU en 1974.

Los iteradores internos son funciones de orden superior (a menudo toman funciones anónimas ) como map , reduce , etc., que implementan el recorrido a través de un contenedor, aplicando la función dada a cada elemento a su vez.

Se puede pensar en un iterador externo como un tipo de puntero que tiene dos operaciones principales: hacer referencia a un elemento en particular en la colección de objetos (llamado acceso a elementos ) y modificarse a sí mismo para que apunte al siguiente elemento (llamado recorrido de elementos ). [4] También debe haber una forma de crear un iterador para que apunte a algún primer elemento, así como alguna forma de determinar cuándo el iterador ha agotado todos los elementos del contenedor. Según el lenguaje y el uso previsto, los iteradores también pueden proporcionar operaciones adicionales o exhibir diferentes comportamientos.

El propósito principal de un iterador es permitir que un usuario procese cada elemento de un contenedor mientras lo aísla de la estructura interna del contenedor. [2] Esto permite que el contenedor almacene elementos de la manera que desee mientras permite que el usuario lo trate como si fuera una secuencia o lista simple. Una clase de iterador generalmente se diseña en estrecha coordinación con la clase de contenedor correspondiente. Normalmente, el contenedor proporciona los métodos para crear iteradores.

Un contador de bucles a veces también se denomina iterador de bucles. Sin embargo, un contador de bucle solo proporciona la funcionalidad transversal y no la funcionalidad de acceso a elementos.