我有std :: vector of std :: unique_ptr-s。如何在不改变其他元素的相对顺序的情况下将一个元素移动到另一个元素?
答案 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
将旋转范围内的元素,导致范围的第一部分与第二部分交换。在您的情况下,其中一个部分是您要移动的元素,另一部分是它与目标之间的所有元素。