所以我有一些遺傳代碼,我很樂意使用更多的現代技術。但我擔心,鑑於事情的設計方式,這是一個不可選項。核心問題是,一次一個節點通常位於多個列表中。事情是這樣的:多個列表中的項目
struct T {
T *next_1;
T *prev_1;
T *next_2;
T *prev_2;
int value;
};
這使得核心具有T
類型的單個對象分配和插入2個雙向鏈表,美觀,高效。
很明顯,我可以只有2 std::list<T*>
's,只需將對象插入到兩個對象中......但有一件事情效率會降低...移除。
通常代碼需要「銷燬」T
類型的對象,這包括從所有列表中刪除元素。這是很好的,因爲給定T*
代碼可以從它存在的所有列表中刪除該對象。有了像std::list
這樣的東西,我需要搜索對象以獲取迭代器,然後刪除它(我不能只是繞過迭代器,因爲它在幾個列表中)。
有沒有一個很好的C++ - ish解決方案,或者是手動滾動的方式是最好的方式?我有一種感覺,手動滾動的方式是答案,但我想我會問。
將提振::輕量級的幫助? – Cogwheel 2010-06-16 20:03:06