std::make_move_iterator
De cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
| Definido en el archivo de encabezado <iterator>
|
||
template< class Iter > std::move_iterator<Iter> make_move_iterator( Iter i ); |
(desde C++11) (hasta C++17) |
|
template< class Iter > constexpr std::move_iterator<Iter> make_move_iterator( Iter i ); |
(desde C++17) | |
make_move_iterator es una plantilla de función de conveniencia que construye un std::move_iterator para el iterator i dado con el tipo deducido a partir del tipo del argumento.
Parámetros
| i | - | Iterador de entrada a ser convertido a un iterador de movimiento. |
Valor de retorno
Un std::move_iterator que se puede utilizar para mover los elementos accedidos a través de i.
Posible implementación
template< class Iter >
constexpr std::move_iterator<Iter> make_move_iterator( Iter i )
{
return std::move_iterator<Iter>(std::move(i));
}
|
Ejemplo
Ejecuta este código
#include <iostream>
#include <list>
#include <vector>
#include <string>
#include <iterator>
int main()
{
std::list<std::string> s{"uno", "dos", "tres"};
std::vector<std::string> v1(s.begin(), s.end()); // copy
std::vector<std::string> v2(std::make_move_iterator(s.begin()),
std::make_move_iterator(s.end())); // mueve
std::cout << "v1 ahora contiene: ";
for(auto str : v1)
std::cout << "\"" << str << "\" ";
std::cout << "\nv2 ahora contiene: ";
for(auto str : v2)
std::cout << "\"" << str << "\" ";
std::cout << "\nlista original ahora contiene: ";
for(auto str : s)
std::cout << "\"" << str << "\" ";
std::cout << '\n';
}
Salida:
v1 ahora contiene: "uno" "dos" "tres"
v2 ahora contiene: "uno" "dos" "tres"
lista original ahora contiene: "" "" ""
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 2061 | C++11 | make_move_iterator no convertía argumentos de tipoarray a punteros |
Se hizo que los convirtiera |
Véase también
(C++11) |
Adaptador de iterador que se desreferencia a una referencia rvalue. (plantilla de clase) |
(C++11) |
Obtiene una referencia r-valor (plantilla de función) |