我有一些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