我有 std::vector of std::unique_ptr-s。如何在不改变其他元素相对顺序的情况下将一个元素移动到另一个地方?
最佳答案
您可以使用 std::rotate
来自 <algorithm>
header 。如果你想向前移动元素,你可以使用:
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
将旋转范围内的元素,导致范围的第一部分与第二部分交换。在您的情况下,这些部分之一是您要移动的元素,另一部分是它与其目的地之间的所有元素。
关于c++ - 将 std::unique_ptr 移动到 std::vector 内的新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35716901/