将std :: unique_ptr移动到std :: vector中的新位置

时间:2016-03-01 07:20:55

标签: c++ algorithm c++11 stl

我有std :: vector of std :: unique_ptr-s。如何在不改变其他元素的相对顺序的情况下将一个元素移动到另一个元素?

1 个答案:

答案 0 :(得分:3)

您可以使用std::rotate标题中的<algorithm>。如果要向前移动元素,可以使用:

std::rotate(elem_iter, elem_iter + 1, elem_dest + 1);

如果您想向后移动,可以使用:

std::rotate(elem_dest, elem_iter, elem_iter + 1);

其中elem_iter是指向要移动的元素的迭代器,elem_dest是指向要移动它的位置的迭代器。顾名思义,std::rotate将旋转范围内的元素,导致范围的第一部分与第二部分交换。在您的情况下,其中一个部分是您要移动的元素,另一部分是它与目标之间的所有元素。