我有两个容器,假设它们的定义如下:
std::vector<std::unique_ptr<int>> a;
std::vector<std::unique_ptr<int>> b;
假设两者都a
被b
填充。我想使用移动语义将整个容器插入a
到 中的特定位置,以便s 移动到. 让我们假设是一个有效的迭代器到. 以下不起作用:b
unique_ptr
b
i
b
b.insert(i, a.begin(), a.end()); // error: tries to copy, not move, unique_ptrs
是否有另一种 STL 算法可以实现这种“移动插入范围”?我想我需要一种emplace_range
,但 VS2010 的 STL 中没有。我不想编写一个一个一个插入的循环,因为每次插入时都会向上移动向量的全部内容,因此最终会导致令人讨厌的 O(n^2) 。还有其他选择吗?