我構建了一個std::list
項目(圖形組件結構),它們定期合併在一起。這個想法是,如果我發現連接兩個組件的節點成爲一個單一的組件,我的列表枚舉我的組件。每個組件都有一個句柄(在這種情況下爲std::list<component>::iterator
)到它的「父」組件,一旦它被合併就會被設置。這種方式來確定一個特定的節點屬於我的組成部分,我走了這條鏈。刪除std :: list中的項目,同時保留它分配
在什麼我在尋找,到底是上std::list
操作,讓我把項目N
的迭代器,並從列表中,但沒有重新分配它刪除:列表的其餘部分的結構以與正常移除相同的方式進行修改。
最好比重新分配項目,從列表中複製它,並調用真正的remove
或erase
不那麼醜。
也許我可以用splice
來完成它。我需要將要刪除的元素拼接成「垃圾」list
,不是嗎?
'拼接成一個_junk list_聽起來正確... –
而且這種方法不太可能使用不兼容的分配器會強制複製。儘管如此,還有一些額外的指針正在洗牌。那麼......不會*傷害*有一種方法來遍歷我的非完全孤兒節點。 –
爲什麼使用列表而不是列表是不是適合你? –