Ash*_*ain 10 c++ algorithm move-semantics c++11
我有两个容器,假设它们的定义如下:
std::vector<std::unique_ptr<int>> a;
std::vector<std::unique_ptr<int>> b;
Run Code Online (Sandbox Code Playgroud)
假设双方a和b被填充.我想使用move-semantics 将整个容器插入a 到特定位置b,以便unique_ptrs移动到b.我们假设它i是一个有效的迭代器b.以下不起作用:
b.insert(i, a.begin(), a.end()); // error: tries to copy, not move, unique_ptrs
Run Code Online (Sandbox Code Playgroud)
是否有另一种STL算法可以实现这种"插入范围移动"?我想我需要一种emplace_range,但VS2010的STL中没有一种.我不想写一个逐个插入的循环,因为它会在每次插入时向上移动向量的整个内容时结束令人讨厌的O(n ^ 2).还有其他选择吗?
ron*_*nag 17
auto a_begin = std::make_move_iterator(a.begin());
auto a_end = std::make_move_iterator(a.end());
b.insert(i, a_begin, a_end);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |