如何将列表<t>对象附加到另一个</t>

时间:2009-09-19 22:39:29

标签: c++ list stl

在C ++中,我有两个list<T>个对象AB,我想将B的所有成员添加到A的末尾。我搜索了几个不同的来源,并没有找到一个简单的解决方案(e.i。A.append(B);),这让我感到很惊讶。

这样做的最佳方式是什么?

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

2 个答案:

答案 0 :(得分:172)

如果您想在B中附加项目副本,您可以这样做:

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

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

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

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

答案 1 :(得分:0)

使用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 ); }