Espacios de nombres
Variantes
Acciones

std::move_iterator

De cppreference.com
< cpp‎ | iterator
 
 
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.
 
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.

Contenido

[editar] 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)

[editar] 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]

[editar] Objetos miembro

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

[editar] 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]

[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: "" "" "" ""

[editar] 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

[editar] 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]