Compartir vía


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 rvaluevalue_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_typede 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_categoryde 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_typede 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++