我有一些C代码,其中有两个链接列表(比如A和B),A被插入到B的特定位置,而A仍然有元素。C++链接列表行为
如何使用C++ STL有效地模拟相同的行为?如果我尝试拼接,它会使第二个空。
谢谢, Gokul。
我有一些C代码,其中有两个链接列表(比如A和B),A被插入到B的特定位置,而A仍然有元素。C++链接列表行为
如何使用C++ STL有效地模拟相同的行为?如果我尝试拼接,它会使第二个空。
谢谢, Gokul。
您需要复制元素。考虑是这样的:如果你想通过两个列表共享同一节点
std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));
,这根本就不是由std::list
(STL容器总是有独家拥有)的支持。您可以避免通过在列表中存储指针来重复元素,也可以使用boost::ptr_list
,它在内部存储指针,但提供更好的API。
请注意,这可能比其他解决方案更慢(http://stackoverflow.com/questions/2349098/2349119#2349119)。请参阅http://stackoverflow.com/questions/2551775/2551808#2551808上的评论,为什么会这样。 – sbi 2010-04-01 17:06:23