将列表元素移动到STL中的末尾

G-7*_*-71 30 c++ stl list

我已经有了CDrawObject*的列表指针

std::list<CDrawObject*> elements;
Run Code Online (Sandbox Code Playgroud)

我如何将一些元素移动到列表的末尾.我看到STL算法参考,但我没有找到这个操作.我怎么能这样做?

Cas*_*Cow 58

使用list方法splice()

void list::splice ( iterator position, list<T,Allocator>& x, iterator i );

将列表x中的迭代器i移动到位置"位置"的当前列表中

从而把它移到最后

x.splice( x.end(), x, iter );
Run Code Online (Sandbox Code Playgroud)

(只要移动项目的列表具有相同的类型,T和Allocator,它们都可以是相同的列表或不同的列表)

  • 在你的例子中,如果`iter`已经指向最后一个元素 - 那么特殊情况是必要的吗? (2认同)
  • @RickWildes 你的警告是不正确的。https://en.cppreference.com/w/cpp/container/list/splice :没有迭代器或引用变得无效,移动元素的迭代器仍然有效 (2认同)