c++ - 将 std::unique_ptr 移动到 std::vector 内的新位置

标签 c++ algorithm c++11 stl

我有 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/

相关文章:

c++ - 如何创建一个类来包装 GLUT?

c++ - 为什么我不能将 unique_ptr 转换为赋值中的原始指针?

algorithm - 快速斐波那契递归

algorithm - 在矩形区域内均匀生成一个随机点(一些矩形可能重叠)

performance - "Fast Integer Multiplication Using Modular Arithmetic"(2008) 算法什么时候比 Schönhage-Strassen 算法快?

c++ - 在不同的属性表中定义用户宏

c++ - 查找 map C++ 未找到已添加到 map 中的键

c++ - 在 C++ 中使用 'void' 模板参数

C++11 风格的 SFINAE 和模板实例化的函数可见性

c++ vector/类/结构到简短的冗长代码