2013-06-25 34 views
0

如果我在C++中有一個列表,並且我有一個指向已添加到列表中的一個對象的指針,我可以從此列表中刪除此元素,如果我有一個指向這個元素?用指針從列表中刪除元素

什麼是最好的方式,列表中的元素可以訪問列表中的其他元素?

我的目標是,列表中的一個元素具有破壞自身的功能。

+1

您可以通過下一個先前元素鏈接做到這一點。 –

+0

是的,所以它需要是一個雙鏈接的。 –

+0

如果它是一個單一的鏈表,你只需要跟蹤「我看過的前一個」。 –

回答

1

如果你正在談論std容器,那麼當你插入一個對象時,它會複製它,而存儲的對象只是一個副本。如果存儲指針,則可以刪除此指針指向的對象。

你應該嘗試寫更詳細的問題。如果我理解正確,我只能說:不要這樣做。 ;]從這些列表中刪除/刪除對象的邏輯應該在別的地方。

0

My target is, that a element in the list has a function to destroy itself.

在這種情況下,最好是有一個雙鏈表(其中每個節點都有一個指針指向bouth一個和下一個節點)。如果您currentNode點要刪除那麼首先的對象添加這樣一行:

currentNode->previousNode->nextNode = currentNode->nextNode;

這將以前的節點鏈接到當前一個節點旁邊當前。

這條線後,您可以安全地刪除您currentNode