Compartir vía


<iterator>

Define iteradores predefinidos e iteradores de secuencia, primitivos de iterador y plantillas auxiliares.

Requisitos

Encabezado: <iterator>

Espacio de nombres: std

Comentarios

Los iteradores son una generalización de punteros que permiten que un programa de C++ funcione con diferentes estructuras de datos de forma uniforme. En lugar de operar en tipos de datos específicos, los algoritmos operan en un intervalo de valores especificados por un tipo de iterador. Los algoritmos pueden funcionar en cualquier estructura de datos que cumpla los requisitos del iterador.

En C++20, hay seis categorías de iteradores. Los iteradores se organizan en una jerarquía de funcionalidades. Los conceptos de C++20 especifican sus funcionalidades. Para obtener una descripción de los distintos iteradores y sus funcionalidades, consulte Conceptos de Iterador.

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

Miembros

Funciones

Nombre Descripción
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 de solo lectura al primer elemento de un contenedor especificado.
cend Recupera un iterador de solo lectura al elemento que sigue al último elemento del contenedor especificado.
crbegin Obtenga un iterador de solo lectura inverso al principio del contenedor especificado.
crend Obtiene el centinela que se encuentra al final de lo que crbegin() devuelve.
data Obtenga un puntero al primer 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.
empty Pruebe si el contenedor especificado está vacío.
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 objeto checked_array_iterator que puede usar otros algoritmos. Nota: 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 portátil para 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 objeto unchecked_array_iterator que puede usar otros algoritmos. Nota: 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 portátil para 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.
rbegin Obtiene un iterador inverso al principio del contenedor especificado.
rend Obtenga un iterador inverso al sentinel al final del contenedor especificado.
size Obtiene el número de elementos.

Operadores

Nombre Descripción
operator!= Comprueba si el objeto iterador del lado izquierdo del operador no es igual al 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.
operator< 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.
operator> 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

NOMBRE Descripción
back_insert_iterator La plantilla de clase 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. Nota: 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 portátil para 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 plantilla de clase 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 Una clase que proporciona un tipo de valor devuelto para una función iterator_category que representa un iterador de entrada.
insert_iterator La plantilla de clase 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 protegido iterator, de clase Container::iterator, denominado iter.
istream_iterator La plantilla de clase describe un objeto iterador de entrada. Extrae objetos de clase Ty de un flujo de entrada, al que accede a través de un objeto que almacena, de puntero de tipo a basic_istream<Elem, Tr>.
istreambuf_iterator La plantilla de clase describe un objeto iterador de entrada. Inserta elementos de clase Elem en un búfer de flujo de salida, al que accede a través de un objeto que almacena, de tipo pointer en basic_streambuf<Elem, Tr>.
iterator La plantilla de clase se usa como tipo base para todos los iteradores.
iterator_traits Clase de plantilla del asistente 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 plantilla de clase describe un objeto iterador de salida. Inserta objetos de clase Type en un flujo de salida, al que accede a través de un objeto que almacena, de tipo pointer en basic_ostream<Elem, Tr>.
ostreambuf_iterator La plantilla de clase describe un objeto iterador de salida. Inserta elementos de clase Elem en un búfer de flujo de salida, al que accede a través de un objeto que almacena, de puntero de tipo a basic_streambuf<Elem, Tr>.
output_iterator_tag Una 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 plantilla de clase 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. Nota: 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 portátil para entornos de compilación estándar de C++ que no admiten esta extensión de Microsoft.

Conceptos

Los conceptos siguientes se definen en el std espacio de nombres . Se aplican a los iteradores y también están relacionados con las categorías de iterador para los intervalos descritos en <ranges> conceptos.

Concepto de iterador Descripción
bidirectional_iteratorC++20 Especifica un iterador que puede leer y escribir tanto hacia delante como hacia atrás.
contiguous_iteratorC++20 Especifica un iterador cuyos elementos son secuenciales en la memoria, el mismo tamaño y se puede tener acceso a ellos mediante la aritmética de puntero.
forward_iteratorC++20 Especifica un iterador que puede leer (y posiblemente escribir) varias veces.
input_iteratorC++20 Especifica un iterador que se puede leer al menos una vez.
input_or_output_iteratorC++20 La base de la taxonomía del concepto de iterador.
output_iterator Especifica un iterador en el que se puede escribir.
random_access_iteratorC++20 Especifica un iterador que se puede leer y escribir por índice.
sentinel_forC++20 Especifica un sentinel para un tipo de iterador.
sized_sentinel_forC++20 Especifica que un iterador y su centinela se pueden restar (mediante -) para encontrar su diferencia en el tiempo constante.

Consulte también

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