【发布时间】:2012-12-07 15:15:18
【问题描述】:
我构建了一个std::list 的项目(图形组件结构),它们定期合并在一起。这个想法是,如果我发现一个连接两个组件的节点,它们就会成为一个单独的组件,并且我的列表会枚举我的组件。每个组件都有一个指向其“父”组件的句柄(在本例中为 std::list<component>::iterator),该句柄在合并后设置。通过这种方式确定特定节点所属的组件,我沿着这条链走。
最后,我正在寻找的是对 std::list 的操作,它允许我获取项目 N 的迭代器,并从列表中删除它但不释放它:列表其余部分的结构与正常删除它的方式完全相同。
最好是比重新分配项目、从列表中复制它并调用真正的remove 或erase 更丑的东西。
也许我可以用splice 完成它。我需要将要删除的元素拼接成“垃圾”list,不是吗?
【问题讨论】:
-
splice-ing 进入一个垃圾清单听起来很对... -
这种方法不太可能使用不兼容的分配器会强制复制。仍然......还有一些额外的指针被洗牌。嗯......没有伤害有一种方法来迭代我的非完全孤立节点。
-
为什么用 list
代替 list 不适合你?
标签: c++ stl linked-list doubly-linked-list