move_iterator (Clase)
La plantilla de clase move_iterator
es un contenedor para un iterador. La clase move_iterator ofrece el mismo comportamiento que el iterador que encapsula (almacena), con la excepción de que convierte el operador de desreferencia del iterador almacenado en una referencia rvalue y convierte una copia en un movimiento. Para obtener más información sobre rvalues, vea Declarador de referencia a un valor R: &&.
Sintaxis
class move_iterator;
Comentarios
La plantilla de clase describe un objeto que se comporta como un iterador salvo cuando se desreferencia. Almacena un iterador de acceso aleatorio de tipo Iterator
, al que se tiene acceso mediante la función miembro base()
. Todas las operaciones de move_iterator
se realizan directamente en el iterador almacenado, con la excepción de que el resultado de operator*
se convierte implícitamente en value_type&&
para crear una referencia rvalue.
Un move_iterator
puede llevar a cabo operaciones no definidas por el iterador encapsulado. Estas operaciones no se deberían usar.
Constructores
Constructor | Descripción |
---|---|
move_iterator | Constructor para los objetos de tipo move_iterator . |
Typedefs
Nombre de tipo | Descripción |
---|---|
iterator_type | Sinónimo del parámetro de plantilla RandomIterator . |
iterator_category | Un sinónimo de una expresión más larga de typename del mismo nombre, iterator_category identifica las capacidades generales del iterador. |
value_type | Un sinónimo de una expresión más larga de typename del mismo nombre, value_type describe de qué tipo son los elementos del iterador. |
difference_type | Un sinónimo de una expresión más larga de typename del mismo nombre, difference_type describe el tipo entero necesario para expresar valores diferentes entre elementos. |
pointer | Sinónimo del parámetro de plantilla RandomIterator . |
referencia | Sinónimo de la referencia rvalue value_type&& . |
Funciones miembro
Función de miembro | Descripción |
---|---|
base | La función miembro devuelve el iterador almacenado contenido en este move_iterator . |
Operadores
Operador | Descripción |
---|---|
move_iterator::operator* | Devuelve (reference)*base() . |
move_iterator::operator++ | Incrementa el iterador almacenado. El comportamiento exacto depende de si se trata de una operación de preincremento o de postincremento. |
move_iterator::operator-- | Disminuye el iterador almacenado. El comportamiento exacto depende de si se trata de una operación de predecremento o posdecremento. |
move_iterator::operator-> |
Devuelve &**this . |
move_iterator::operator- | Devuelve move_iterator(*this) -= restando primero el valor situado a la derecha de la posición actual. |
move_iterator::operator[] | Devuelve (reference)*(*this + off) . Permite especificar una posición de desplazamiento a partir de la base actual para obtener el valor que se encuentra en esa ubicación. |
move_iterator::operator+ | Devuelve el valor move_iterator(*this) += . Permite agregar una posición de desplazamiento a la base para obtener el valor que se encuentra en esa ubicación. |
move_iterator::operator+= | Agrega el valor situado a la derecha del iterador almacenado y devuelve *this . |
move_iterator::operator-= | Resta el valor situado a la derecha del iterador almacenado y devuelve *this . |
Requisitos
Encabezado:<iterator>
Espacio de nombres: std
move_iterator::base
Devuelve el iterador almacenado para este move_iterator
.
RandomIterator base() const;
Comentarios
La función miembro devuelve el iterador almacenado.
move_iterator::difference_type
El tipo difference_type
se move_iterator
typedef
basa en el rasgo difference_type
de iterador y se puede usar indistintamente con él.
typedef typename iterator_traits<RandomIterator>::difference_type difference_type;
Comentarios
Tipo sinónimo del rasgo iterador typename iterator_traits<RandomIterator>::pointer
.
move_iterator::iterator_category
El tipo iterator_category
se move_iterator
typedef
basa en el rasgo iterator_category
de iterador y se puede usar indistintamente con él.
typedef typename iterator_traits<RandomIterator>::iterator_category iterator_category;
Comentarios
Tipo sinónimo del rasgo iterador typename iterator_traits<RandomIterator>::iterator_category
.
move_iterator::iterator_type
El tipo iterator_type
se basa en el parámetro de plantilla RandomIterator
para la plantilla de clase move_iterator
y se puede usar indistintamente en su lugar.
typedef RandomIterator iterator_type;
Comentarios
El tipo es un sinónimo del parámetro de plantilla RandomIterator
.
move_iterator::move_iterator
Construye un iterador de movimiento. Usa el parámetro como iterador almacenado.
move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);
Parámetros
right
Iterador que se va a usar como iterador almacenado.
Comentarios
El primer constructor inicializa el iterador almacenado con su constructor predeterminado. Los demás constructores inicializan el iterador almacenado con base.base()
.
move_iterator::operator+=
Agrega un desplazamiento al iterador almacenado, de modo que el iterador almacenado apunta al elemento en la nueva ubicación actual. Luego, el operador mueve el nuevo elemento actual.
move_iterator& operator+=(difference_type _Off);
Parámetros
_Off
Un desplazamiento para agregar a la posición actual con el fin de determinar la nueva posición actual.
Valor devuelto
Devuelve el nuevo elemento actual.
Comentarios
El operador agrega _Off al iterador almacenado. Después devuelve *this
.
move_iterator::operator-=
Se desplaza por un número especificado de elementos anteriores. Este operador resta un desplazamiento al iterador almacenado.
move_iterator& operator-=(difference_type _Off);
Parámetros
Comentarios
El operador realiza la evaluación *this += -_Off
. Después devuelve *this
.
move_iterator::operator++
Incrementa el iterador almacenado que pertenece a este move_iterator
. El operador de preincremento accede al siguiente elemento. El operador de preincremento accede al siguiente elemento.
move_iterator& operator++();
move_iterator operator++(int);
Parámetros
Comentarios
El primer operador (preincremento) incrementa el iterador almacenado. Después devuelve *this
.
El segundo operador (postincremento) hace una copia de *this
y realiza la evaluación ++*this
. Después devuelve la copia.
move_iterator::operator+
Devuelve la posición del iterador avanzada un número de elementos.
move_iterator operator+(difference_type _Off) const;
Parámetros
Comentarios
El operador devuelve move_iterator(*this) +=
_Off
.
move_iterator::operator[]
Permite el acceso del índice de matriz a elementos en el rango de move iterator
.
reference operator[](difference_type _Off) const;
Parámetros
Comentarios
El operador devuelve (reference)*(*this + _Off)
.
move_iterator::operator--
Los operadores de miembro de predecremento y postdecremento realizan una reducción en el iterador almacenado.
move_iterator& operator--();
move_iterator operator--();
Parámetros
Comentarios
El primer operador de miembro (predecremento) disminuye el iterador almacenado. Después devuelve *this
.
El segundo operador (postdecremento) hace una copia de *this
y evalúa --*this
. Después devuelve la copia.
move_iterator::operator-
Disminuye el iterador almacenado y devuelve el valor indicado.
move_iterator operator-(difference_type _Off) const;
Parámetros
Comentarios
El operador devuelve move_iterator(*this) -= _Off
.
move_iterator::operator*
Desreferencia el iterador almacenado y devuelve el valor. Se comporta como un rvalue reference
y efectúa una asignación de movimiento. El operador transfiere el elemento actual fuera del iterador base. El elemento que sigue se convierte en el nuevo elemento actual.
reference operator*() const;
Comentarios
El operador devuelve (reference)*base()
.
move_iterator::operator->
Al igual que un normal RandomIterator
operator->
, proporciona acceso a los campos que pertenecen al elemento actual.
pointer operator->() const;
Comentarios
El operador devuelve &**this
.
move_iterator::pointer
El tipo pointer
es un typedef
que se basa en el iterador aleatorio RandomIterator
para move_iterator
, y se puede usar indistintamente.
typedef RandomIterator pointer;
Comentarios
El tipo es un sinónimo de RandomIterator
.
move_iterator::reference
El tipo reference
es un typedef
que se basa en value_type&&
para move_iterator
, y se pueden usar indistintamente con value_type&&
.
typedef value_type&& reference;
Comentarios
El tipo es un sinónimo de value_type&&
, que es una referencia rvalue.
move_iterator::value_type
El tipo value_type
se move_iterator
typedef
basa en el rasgo value_type
de iterador y se puede usar indistintamente con él.
typedef typename iterator_traits<RandomIterator>::value_type value_type;
Comentarios
Tipo sinónimo del rasgo iterador typename iterator_traits<RandomIterator>::value_type
.
Consulte también
<iterator>
Lvalues y Rvalues
Constructores de movimiento y operadores de asignación de movimiento (C++)
Referencia de biblioteca estándar de C++