2010-11-09 14 views
7

He estado buscando en la documentación de C++ una función que movería un rango de elementos de un contenedor a otro, usando la semántica de movimiento. Sin embargo, no he encontrado tal función. ¿Qué me estoy perdiendo?¿Mover una gama de elementos entre contenedores?

¿Cómo haría lo siguiente sin copiar y usar los bucles explícitos?

// Move 10 elements from beginning of source to end of dest 
dest.end() <- move(source.begin(), source.begin() + 10) 

Respuesta

7

pienso que usted está buscando en std::move<algorithm>:

std::move(source.begin(), source.begin() + 10, 
      std::insert_iterator(dest, dest.end())); 

Es como std::copy, excepto que se mueva-asigna en lugar de copia-cesionarios.

+0

¿Dónde puedo encontrar una documentación de referencia para esa función? He estado buscando en Google y mirando el borrador final de C++ 0x ... Parece que no puedo encontrarlo. – ronag

+1

@ronag: Miré §25.3.2, en n3126. – GManNickG

+0

Genial. Gracias. – ronag

Cuestiones relacionadas