在C ++中,我有两个list<T>
个对象A
和B
,我想将B
的所有成员添加到A
的末尾。我搜索了几个不同的来源,并没有找到一个简单的解决方案(e.i。A.append(B);
),这让我感到很惊讶。
这样做的最佳方式是什么?
碰巧,我在此之后并不关心B(它会在下一行被删除)所以如果有一种方法可以利用它来获得更好的性能,我也对此感兴趣。
答案 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 ); }