在C ++中,我有两个list<T>
对象A
,B
并且想要将的所有成员添加B
到的末尾A
。我搜索了一些不同的资源,但没有找到一个简单的解决方案(ei A.append(B);
),这让我有些惊讶。
做这个的最好方式是什么?
碰巧的是,在此之后我不在乎B(它会在下一行删除),因此,如果有一种方法可以利用它来获得更好的性能,我也对此感兴趣。
Answers:
如果要在B中附加项目的副本,可以执行以下操作:
a.insert(a.end(), b.begin(), b.end());
如果要将B的项目移动到A的末尾(同时清空B),则可以执行以下操作:
a.splice(a.end(), b);
在您的情况下,拼接会更好,因为它只涉及调整链表中的几个指针。
a.splice(a.end(), b)
和是O(1),对a.splice(a.end(), b, it_b_start)
是O(n)a.splice(a.end(), b, it_b_start, it_b_end)
。