Espacios de nombres
Variantes

std::move_iterator

De cppreference.com
 
 
Biblioteca de iteradores
Conceptos de iteradores
Primitivas de iteradores
Conceptos de algoritmos y servicios
Conceptos invocables indirectos
Requerimientos comunes de algoritmos
Servicios
Adaptadores de iteradores
Iteradores de flujos
Puntos de personalización de iteradores
Operaciones de iteradores
(C++11)
(C++11)
Acceso a rangos
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
std::istream_iterator
Las funciones miembro
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Terceros funciones
Original:
Non-member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
<tbody> </tbody>
Definido en el archivo de encabezado <iterator>
template< class Iter > class move_iterator;
(desde C++11)

std::move_iterator es un adaptador de iterador que se comporta exactamente igual que el iterador subyacente (que debe ser al menos un InputIterator o modelar a input_iterator (desde C++20)), excepto que desreferenciarlo convierte el valor devuelto por el iterador subyacente a un rvalue. Si este iterador se utiliza como un iterador de entrada, el efecto es que los valores se mueven de él, en lugar de copiarse de él.

Tipos miembro

Tipo miembro Definición
iterator_type Iter
iterator_category

std::iterator_traits<Iter>::iterator_category

(hasta C++20)

Si std::iterator_traits<Iter>::iterator_category modela std::derived_from<std::random_access_iterator_tag>, esto es std::random_access_iterator_tag. De lo contrario, esto es std::iterator_traits<Iter>::iterator_category sin cambiar

(desde C++20)
iterator_concept
(desde C++20)
std::input_iterator_tag
value_type

std::iterator_traits<Iter>::value_type

(hasta C++20)

std::iter_value_t<Iter>

(desde C++20)
difference_type

std::iterator_traits<Iter>::difference_type

(hasta C++20)

std::iter_difference_t<Iter>

(desde C++20)
pointer Iter
reference

Si std::iterator_traits<Iter>::reference es una referencia, esto es, la versión referencia rvalue del mismo tipo. De lo contrario, (como cuando el iterador envuelto devuelve por valor), esto es std::iterator_traits<Iter>::reference sin cambiar

(hasta C++20)

std::iter_rvalue_reference_t<Iter>

(desde C++20)

Funciones miembro

construye un nuevo adaptador iterador
Original:
constructs a new iterator adaptor
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función miembro pública) [editar]
asigna otro iterador
Original:
assigns another iterator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función miembro pública) [editar]
accede el iterador subyacente
Original:
accesses the underlying iterator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función miembro pública) [editar]
accede al elemento apuntado
(función miembro pública) [editar]
obtiene la referencia rvalue al elemento indexado
(función miembro pública) [editar]
avances o disminuye el iterador
Original:
advances or decrements the iterator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función miembro pública) [editar]

Objetos miembro

Nombre del miembro Definición
current (private) Una copia del iterador base(), el nombre es solo para exposición.

Funciones no miembro

Plantilla:cpp/iterator/move iterator/dsc operator cmp2Plantilla:cpp/iterator/move iterator/dsc operator-2
compara los iteradores subyacentes
(plantilla de función) [editar]
avanza el iterador
Original:
advances the iterator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(plantilla de función) [editar]
calcula la distancia entre dos adaptadores iterador
Original:
computes the distance between two iterator adaptors
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(plantilla de función) [editar]
(C++20)
Convierte el resultado de desreferenciar el iterador subyacente a su tipo referencia rvalue asociado
(plantilla de función) [editar]
(C++20)
Intercambia los objetos a los que apuntan dos iteradores subyacentes
(plantilla de función) [editar]

Ejemplo

#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <numeric>
#include <string>

int main()
{
    std::vector<std::string> v{"esto", "es", "un", "ejemplo"};

    std::cout << "Viejo contenido del vector: ";
    for (auto& s : v)
        std::cout << '"' << s << "\" ";

    typedef std::vector<std::string>::iterator iter_t;
    std::string concat = std::accumulate(
                             std::move_iterator<iter_t>(v.begin()),
                             std::move_iterator<iter_t>(v.end()),
                             std::string());  // puede simplificarse con std::make_move_iterator

    std::cout << "\nConcatenado como una cadena: " << concat << '\n'
              << "Nuevo contenido del vector: ";
    for (auto& s : v)
        std::cout << '"' << s << "\" ";
    std::cout << '\n';
}

Posible salida:

Viejo contenido del vector: "esto" "es" "un" "ejemplo"
Concatenado como una cadena: estoesunejemplo
Nuevo contenido del vector: "" "" "" ""

Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 2106 C++11 Desreferenciar un move_iterator podía devolver una referencia pendiente
si desreferenciar el iterador subyacente devuelve un prvalue
En su lugar devuelve el objeto

Véase también

Crea un std::move_iterator del tipo inferido a partir del argumento.
(plantilla de función) [editar]
Adaptador de centinela para uso con std::move_iterator
(plantilla de clase) [editar]