我想做类似以下的事情(a
和b
都是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/