【发布时间】:2010-11-15 17:05:44
【问题描述】:
我有两个容器,假设它们是这样定义的:
std::vector<std::unique_ptr<int>> a;
std::vector<std::unique_ptr<int>> b;
假设a 和b 都已填充。我想使用移动语义将整个容器a 插入到b 中的特定位置,以便unique_ptrs 移动到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) 。还有其他选择吗?
【问题讨论】:
标签: c++ algorithm c++11 move-semantics