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

在 C + + 中,我有两个 list<T>对象 AB,我想将 B的所有成员添加到 A的末尾。我已经搜索了一些不同的来源,还没有找到一个简单的解决方案(例如 A.append(B);) ,这让我有点吃惊。

最好的方法是什么?

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

82236 次浏览

If you want to append copies of items in B, you can do:

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

If you want to move items of B to the end of A (emptying B at the same time), you can do:

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

In your situation splicing would be better, since it just involves adjusting a couple of pointers in the linked lists.

one example using 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 ); }