如果我在c ++中有一个列表,并且我有一个指向其中一个对象的指针已被添加到列表中,如果我有一个指向这个元素的指针,我可以从这个列表中删除这个元素吗?
最好的方法是,列表中的元素可以访问列表中的其他元素吗?
我的目标是,列表中的元素具有破坏自身的功能。
答案 0 :(得分:1)
如果您正在谈论std容器,那么当您插入一个对象时,您将其复制,而存储的对象只是一个副本。如果存储指针,则可以删除此指针指向的对象。
你应该尝试写更详细的问题。如果我理解正确,我可以说的是:不要那样做。 ;]从这些列表中删除/删除对象的逻辑应该在其他地方。
答案 1 :(得分:0)
My target is, that a element in the list has a function to destroy itself.
在这种情况下,最好有一个双链表(每个节点都有一个指向前一节点和下一节点的指针)。如果您的currentNode
指向要删除的对象,则首先添加如下所示的行:
currentNode->previousNode->nextNode = currentNode->nextNode;
这会将当前节点之前的节点链接到当前节点旁边的节点。
在此行之后,您可以安全地删除currentNode