Tengo dos contenedores, digamos que están definidos así:¿Cómo manejar el 'emplace_range' que falta en C++ 0x STL?
std::vector<std::unique_ptr<int>> a;
std::vector<std::unique_ptr<int>> b;
Supongamos tanto a
y b
están pobladas. Quiero insertar todo el contenedor a
en una ubicación particular en b
, usando move-semántica para que el unique_ptr
se mueva a b
. Supongamos i
es un iterador válido en algún lugar en b
. El siguiente no funciona:
b.insert(i, a.begin(), a.end()); // error: tries to copy, not move, unique_ptrs
¿Hay otro algoritmo STL que pueden lograr esto 'insert-gama-de-movimiento'? Supongo que necesito un tipo de emplace_range
, pero no hay uno en el STL de VS2010. No quiero escribir un bucle que se inserte uno por uno, ya que terminaría siendo un desagradable O (n^2) debido a que cambia el contenido completo del vector cada vez que se inserta. ¿Alguna otra opción?
Awesomeness. No sabía sobre 'make_move_iterator'. – AshleysBrain
VS2010 es compatible con esto. Bueno. –