En C++ 98, puedo copiar rangos con el algoritmo std::copy
.¿Hay algún algoritmo para mover rangos?
std::copy(source.begin(), source.end(), destination.begin());
¿Hay algún algoritmo en C++ 0x que mueva los elementos del origen al destino? ¿O es std::copy
de alguna manera sobrecargado para aceptar algo como iteradores rvalue? ¿Existe tal cosa?
El algoritmo podría ser algo como esto:
#include <utility>
template<class InputIterator, class OutputIterator>
OutputIterator mooove(InputIterator first, InputIterator last, OutputIterator result)
{
for (; first != last; ++first, ++last) *result = std::move(*first);
return result;
}
¿Qué quiere decir con "mover"? –
Invocando la asignación de movimiento 'operator = (T &&)' en lugar de la asignación de copia 'operator = (const T &)' para cada elemento del rango. – fredoverflow
para que el algoritmo altere el rango de fuente, en lugar de copiar, ¿'cortará' los elementos? –