如何将一个列表<T>对象追加到另一个列表中

在C ++中,我有两个list<T>对象AB ,我想将B所有成员添加到A的结尾。 我search了几个不同的来源,并没有find一个简单的解决scheme(ei A.append(B); ),这让我感到惊讶。

做这个的最好方式是什么?

碰巧,在这之后我不关心B(它会在下一行被删除),所以如果有一种方法可以利用这个来获得更好的性能,我也对此感兴趣。

如果你想追加B中的项目副本 ,你可以这样做:

 a.insert(a.end(), b.begin(), b.end()); 

如果你想把B的项目移到 A的末尾(同时清空B),你可以这样做:

 a.splice(a.end(), b); 

在你的情况下,拼接会更好,因为它只需要调整链表中的几个指针。

一个使用boost的例子

 std::list<T> A; // object A is a list containing T structure std::list<T> B; // object B is a list containing T structure // append list B to list A BOOST_FOREACH(auto &listElement, B) { A.push_back( listElement ); }