我想做类似以下的事情(ab都是vector<my_moveable_type>):

a.insert(a.end(), b.begin(), b.end());

但是我希望该操作将b的元素 move 到a中,而不是复制它们。我已经找到std::vector::emplace,但这仅用于单个元素,而不是范围。

能做到吗?

最佳答案

您可以使用 std::make_move_iterator ,以便对迭代器的访问返回rvalue引用而不是lvalue引用:

a.insert(a.end(), std::make_move_iterator(b.begin()), std::make_move_iterator(b.end()));

关于c++11 - 我可以将一个向量的内容移到另一向量的末尾吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18159183/

10-11 22:44
查看更多