J'ai deux conteneurs, disons qu'ils sont définis comme ceci:Comment gérer 'emplace_range' manquant dans C++ 0x STL?
std::vector<std::unique_ptr<int>> a;
std::vector<std::unique_ptr<int>> b;
On suppose à la fois a
et b
sont peuplées. Je veux insérer le conteneur entier a
à un emplacement particulier dans b
, en utilisant la sémantique de mouvement afin que les unique_ptr
passent à b
. Supposons i
est un itérateur valide à quelque part dans b
. Ce qui suit ne fonctionne pas:
b.insert(i, a.begin(), a.end()); // error: tries to copy, not move, unique_ptrs
Y at-il un autre algorithme STL qui peut réaliser cette «insérer portée par mouvement? Je suppose que j'ai besoin d'une sorte de emplace_range
, mais il n'y en a pas dans le STL de VS2010. Je ne veux pas écrire une boucle qui insère une par une, car elle finirait par un O (n^2) désagréable à cause du décalage de tout le contenu du vecteur à chaque insertion. D'autres options?
Awesomeness. Je ne connaissais pas 'make_move_iterator'. – AshleysBrain
VS2010 ne supporte pas cela. Bien. –