<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_iterator C++20 |
Especifica un iterador que puede leer y escribir tanto hacia delante como hacia atrás. |
contiguous_iterator C++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_iterator C++20 |
Especifica un iterador que puede leer (y posiblemente escribir) varias veces. |
input_iterator C++20 |
Especifica un iterador que se puede leer al menos una vez. |
input_or_output_iterator C++20 |
La base de la taxonomía del concepto de iterador. |
output_iterator |
Especifica un iterador en el que se puede escribir. |
random_access_iterator C++20 |
Especifica un iterador que se puede leer y escribir por índice. |
sentinel_for C++20 |
Especifica un sentinel para un tipo de iterador. |
sized_sentinel_for C++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++