所以我有一些遗传代码,我很乐意使用更多的现代技术。但我担心,鉴于事情的设计方式,这是一个不可选项。核心问题是,一次一个节点通常位于多个列表中。事情是这样的:多个列表中的项目
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