Compartir a través de


<iterator>

Define las primitivas de iterador, iteradores predefinidos e iteradores de secuencia, así como varias plantillas auxiliares. Entre los iteradores predefinidos se incluyen adaptadores de inserción y de inversión. Hay tres clases de adaptadores de iterador de inserción: frontal, posterior y general. Proporcionan la semántica de inserción en lugar de la semántica de sobrescritura que los iteradores de funciones miembro contenedoras proporcionan.

#include <iterator>

Comentarios

Los iteradores son una generalización de los punteros; realizan una abstracción de sus requisitos de forma que un programa de C++ puede trabajar con estructuras de datos diferentes de manera uniforme. Los iteradores actúan como intermediarios entre los contenedores y los algoritmos genéricos. En lugar de trabajar sobre tipos de datos específicos, los algoritmos se definen para que funcionen sobre un intervalo especificado por un tipo de iterador. Entonces, el algoritmo puede trabajar con cualquier estructura de datos que satisfaga los requisitos del iterador. Hay cinco tipos o categorías de iterador, cada uno de los cuales dispone de su propio conjunto de requisitos y de funcionalidad resultante:

  • Salida: desplazamiento hacia delante, puede almacenar pero no recuperar valores, proporcionado por el ostream y el insertador.

  • Entrada: desplazamiento hacia delante, puede recuperar pero no almacenar valores, proporcionado por el istream.

  • Adelante: desplazamiento hacia delante, puede almacenar y recuperar valores.

  • Bidireccional: desplazamiento hacia delante y hacia atrás, puede almacenar y recuperar valores, proporcionado por list, set, multiset, map y multimap.

  • Acceso aleatorio: acceso a los elementos en cualquier orden, puede almacenar y recuperar valores, proporcionado por vector, deque, string y array.

Los iteradores que tienen mayores requisitos y por tanto tienen un acceso más eficaz a los elementos se pueden usar en lugar de los iteradores con menos requisitos. Por ejemplo, si se llama a un iterador hacia delante, se puede utilizar en su lugar un iterador de acceso aleatorio.

Visual Studio ha agregado extensiones a los iteradores de la Biblioteca estándar de C++ para admitir varias situaciones en modo depuración para los iteradores comprobados y no comprobados. Para obtener más información, vea Bibliotecas seguras: Biblioteca estándar de C++.

Funciones

advance

Incrementa un iterador un número especificado de posiciones.

back_inserter

Crea un iterador que puede insertar elementos en la parte posterior de un contenedor especificado.

begin

Recupera un iterador en el primer elemento de un contenedor especificado.

cbegin

Recupera un iterador constante en el primer elemento de un contenedor especificado.

cend

Recupera un iterador constante en el elemento que sigue al último elemento del contenedor especificado.

distance

Determina el número de incrementos entre las posiciones direccionadas por dos iteradores.

end

Recupera un iterador en el elemento que sigue al último elemento del contenedor especificado.

front_inserter

Crea un iterador que puede insertar elementos en la parte delantera de un contenedor especificado.

inserter

Adaptador de iterador que agrega un nuevo elemento a un contenedor en un punto especificado de inserción.

make_checked_array_iterator

Crea un checked_array_iterator que pueden usar otros algoritmos.

NotaNota

Esta función es una extensión de Microsoft de la Biblioteca estándar de C++.El código implementado mediante esta función no es portable a los entornos de compilación estándar de C++ que no admiten esta extensión de Microsoft.

make_move_iterator

Devuelve un iterador de movimiento que contiene el iterador proporcionado como su iterador base almacenado.

make_unchecked_array_iterator

Crea un unchecked_array_iterator que pueden usar otros algoritmos.

NotaNota

Esta función es una extensión de Microsoft de la Biblioteca estándar de C++.El código implementado mediante esta función no es portable a los entornos de compilación estándar de C++ que no admiten esta extensión de Microsoft.

next

Procesa una iteración un número especificado de veces y devuelve la nueva posición del iterador.

prev

Procesa una iteración en dirección inversa un número especificado de veces y devuelve la nueva posición del iterador.

Operadores

operator!=

Comprueba si el objeto iterador del lado izquierdo del operador no es igual que el objeto iterador del lado derecho.

operator==

Comprueba si el objeto iterador del lado izquierdo del operador es igual que el objeto iterador del lado derecho.

':?'.<

Comprueba si el objeto iterador del lado izquierdo del operador es menor que el objeto iterador del lado derecho.

operator<=

Comprueba si el objeto iterador del lado izquierdo del operador es menor o igual que el objeto iterador del lado derecho.

':?'.>

Comprueba si el objeto iterador del lado izquierdo del operador es mayor que el objeto iterador del lado derecho.

operator>=

Comprueba si el objeto iterador del lado izquierdo del operador es mayor o igual que el objeto iterador del lado derecho.

operator+

Agrega un desplazamiento a un iterador y devuelve el nuevo reverse_iterator que direcciona el elemento insertado en la nueva posición de desplazamiento.

operator-

Resta un iterador de otro y devuelve la diferencia.

Clases

back_insert_iterator

La clase de plantilla describe un objeto iterador de salida. Inserta elementos en un contenedor de tipo Container, que tiene acceso a través del objeto pointer protegido que almacena denominado contenedor.

bidirectional_iterator_tag

Clase que proporciona un tipo de valor devuelto para una función iterator_category que representa un iterador bidireccional.

checked_array_iterator

Clase que tiene acceso a una matriz mediante un iterador comprobado de acceso aleatorio.

NotaNota

Esta clase es una extensión de Microsoft de la Biblioteca estándar de C++.El código implementado mediante esta función no es portable a los entornos de compilación estándar de C++ que no admiten esta extensión de Microsoft.

forward_iterator_tag

Clase que proporciona un tipo de valor devuelto para una función iterator_category que representa un iterador hacia delante.

front_insert_iterator

La clase de plantilla describe un objeto iterador de salida. Inserta elementos en un contenedor de tipo Container, que tiene acceso a través del objeto pointer protegido que almacena denominado contenedor.

input_iterator_tag

Clase que proporciona un tipo de valor devuelto para una función iterator_category que representa un iterador de entrada.

insert_iterator

La clase de plantilla describe un objeto iterador de salida. Inserta elementos en un contenedor de tipo Container, que tiene acceso a través del objeto pointer protegido que almacena denominado contenedor. También almacena el objeto iterador protegido, de clase Container::iterator, denominado iter.

istream_iterator

La clase de plantilla describe un objeto iterador de entrada. Extrae objetos de clase Ty de un flujo de entrada, al que tiene acceso a través de un objeto que almacena, de tipo puntero a basic_istream<Elem, Tr>.

istreambuf_iterator

La clase de plantilla describe un objeto iterador de entrada. Inserta elementos de clase Elem en un búfer de flujo de salida, al que tiene acceso mediante un objeto que almacena, de tipo puntero a basic_streambuf<Elem, Tr>.

iterator

La clase de plantilla se usa como tipo base para todos los iteradores.

iterator_traits

Clase de plantilla auxiliar que proporciona los tipos críticos asociados a diferentes tipos de iterador para que se pueda hacer referencia a ellos de la misma manera.

move_iterator

Un objeto move_iterator almacena un iterador de acceso aleatorio de tipo RandomIterator. Se comporta como un iterador de acceso aleatorio, excepto cuando se desreferencia. El resultado de operator* se convierte implícitamente a value_type&&: para crear rvalue reference.

ostream_iterator

La clase de plantilla describe un objeto iterador de salida. Inserta objetos de clase Type en un flujo de salida, al que tiene acceso mediante un objeto que almacena, de tipo puntero a basic_ostream<Elem, Tr>.

ostreambuf_iterator

La clase de plantilla describe un objeto iterador de salida. Inserta elementos de clase Elem en un búfer de flujo de salida, al que tiene acceso mediante un objeto que almacena, de tipo puntero a basic_streambuf<Elem, Tr>.

output_iterator_tag

Clase que proporciona un tipo de valor devuelto para una función iterator_category que representa un iterador de salida.

random_access_iterator_tag

Clase que proporciona un tipo de valor devuelto para una función iterator_category que representa un iterador de acceso aleatorio.

reverse_iterator

La clase de plantilla describe un objeto que se comporta como un iterador de acceso aleatorio, solo en orden inverso.

unchecked_array_iterator

Clase que tiene acceso a una matriz mediante un iterador no comprobado de acceso aleatorio.

NotaNota

Esta clase es una extensión de Microsoft de la Biblioteca estándar de C++.El código implementado mediante esta función no es portable a los entornos de compilación estándar de C++ que no admiten esta extensión de Microsoft.

Vea también

Referencia

Seguridad para subprocesos en la biblioteca estándar de C++

Biblioteca de plantillas estándar

Otros recursos

Archivos de encabezado de la biblioteca estándar de C++