2010-02-27 59 views
5

我有一些C代碼,其中有兩個鏈接列表(比如A和B),A被插入到B的特定位置,而A仍然有元素。C++鏈接列表行爲

如何使用C++ STL有效地模擬相同的行爲?如果我嘗試拼接,它會使第二個空。

謝謝, Gokul。

回答

2

您需要複製元素。考慮是這樣的:如果你想通過兩個列表共享同一節點

std::copy(a.begin(), a.end(), std::inserter(b, b_iterator)); 

,這根本就不是由std::list(STL容器總是有獨家擁有)的支持。您可以避免通過在列表中存儲指針來重複元素,也可以使用boost::ptr_list,它在內部存儲指針,但提供更好的API。

+0

請注意,這可能比其他解決方案更慢(http://stackoverflow.com/questions/2349098/2349119#2349119)。請參閱http://stackoverflow.com/questions/2551775/2551808#2551808上的評論,爲什麼會這樣。 – sbi 2010-04-01 17:06:23

7

嘗試插入:

B.insert(position, A.begin(), A.end()); 

到前 '位置' 插入A在B中的元素的副本。 A本身保持不變。看到這個link

+0

+1比我的答案更好。 – Tronic 2010-02-27 22:33:28

+0

@Tronic:謝謝。 – Arun 2010-03-01 18:57:43